Merge branch 'main' of https://github.com/JustAGenericUsername/sandboxelsmodding
This commit is contained in:
commit
6aab6f82d2
38
lang/es.json
38
lang/es.json
|
|
@ -521,23 +521,23 @@
|
||||||
"molten_borax":"bórax_fundido",
|
"molten_borax":"bórax_fundido",
|
||||||
"molten_epsom_salt":"sal_de_epsom_fundido",
|
"molten_epsom_salt":"sal_de_epsom_fundido",
|
||||||
"molten_potassium_salt":"sal_de_potassio_fundido",
|
"molten_potassium_salt":"sal_de_potassio_fundido",
|
||||||
"molten_sodium_acetate":"",
|
"molten_sodium_acetate":"acetato_de_sodio_fundido",
|
||||||
"frozen_nitro":"",
|
"frozen_nitro":"nitrógeno",
|
||||||
"cured_meat": "",
|
"cured_meat": "carné_presérvado",
|
||||||
"nut_oil": "",
|
"nut_oil": "acéite_de_núez",
|
||||||
"grease": "",
|
"grease": "grasa",
|
||||||
"fat": "",
|
"fat": "grasa",
|
||||||
"potassium": "",
|
"potassium": "potasio",
|
||||||
"molten_potassium": "",
|
"molten_potassium": "potasio_fundido",
|
||||||
"magnesium": "",
|
"magnesium": "magnesio",
|
||||||
"molten_magnesium": "",
|
"molten_magnesium": "magnesio_fundido",
|
||||||
"sandstorm": "",
|
"sandstorm": "tormenta_de_arena",
|
||||||
"caustic_potash": "",
|
"caustic_potash": "cáustico_potasio",
|
||||||
"antibomb": "",
|
"antibomb": "anti_bomba",
|
||||||
"tornado": "",
|
"tornado": "tornado",
|
||||||
"earthquake": "",
|
"earthquake": "terremoto",
|
||||||
"tsunami": "",
|
"tsunami": "tsunami",
|
||||||
"blaster": "",
|
"blaster": "desintegrador",
|
||||||
"propane_ice": "",
|
"propane_ice": "propano",
|
||||||
"molten_caustic_potash": ""
|
"molten_caustic_potash": "cáustico_potas_fundido"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,548 @@
|
||||||
|
{
|
||||||
|
"#lang.name": "Halacae",
|
||||||
|
"#lang.credit": "Nekonico, R74n",
|
||||||
|
"land": "moo",
|
||||||
|
"liquids": "mae-e",
|
||||||
|
"life": "ma",
|
||||||
|
"powders": "mayi-i-e",
|
||||||
|
"solids": "maye-e",
|
||||||
|
"energy": "pa",
|
||||||
|
"weapons": "yo",
|
||||||
|
"gases": "lamapa",
|
||||||
|
"food": "paema",
|
||||||
|
"machines": "yaepe",
|
||||||
|
"special": "ayoo",
|
||||||
|
"other": "ayoo-e",
|
||||||
|
"heat": "mosu",
|
||||||
|
"cool": "opasu",
|
||||||
|
"erase": "oyu",
|
||||||
|
"drag": "yapu",
|
||||||
|
"pick": "eyacu",
|
||||||
|
"mix": "o-alayu",
|
||||||
|
"lookup": "samo-u",
|
||||||
|
"shock": "pe",
|
||||||
|
"paint": "samocayu",
|
||||||
|
"sand": "mayi-i",
|
||||||
|
"water": "mae",
|
||||||
|
"salt_water": "mae-oopaema-mayi-i",
|
||||||
|
"sugar_water": "paema-ae-mayi-i_mae",
|
||||||
|
"seltzer": "mape_mae",
|
||||||
|
"dirty_water": "mayi-i-e_mae",
|
||||||
|
"pool_water": "mae-u-e_mae",
|
||||||
|
"dirt": "mayi-i",
|
||||||
|
"mud": "mayi-imae",
|
||||||
|
"wet_sand": "mae-e_mayi-i",
|
||||||
|
"rock": "mayi",
|
||||||
|
"rock_wall": "maye_mayi",
|
||||||
|
"mudstone": "mayi-e_mayi-imae",
|
||||||
|
"packed_sand": "yecaece_mayi-i",
|
||||||
|
"plant": "mi",
|
||||||
|
"dead_plant": "omi",
|
||||||
|
"frozen_plant": "opese_mi",
|
||||||
|
"grass": "parusi_mi",
|
||||||
|
"algae": "mimae",
|
||||||
|
"concrete": "mayiya",
|
||||||
|
"wall": "poo-e_yoo",
|
||||||
|
"fire": "mo",
|
||||||
|
"bomb": "poomoyo",
|
||||||
|
"steam": "lamape_mae",
|
||||||
|
"ice": "opemae",
|
||||||
|
"rime": "opesa",
|
||||||
|
"snow": "opemaemapa",
|
||||||
|
"slush": "opemae-e_mae",
|
||||||
|
"packed_snow": "yecaece_mae",
|
||||||
|
"wood": "mi-oosa",
|
||||||
|
"smoke": "lamape_omayi-i",
|
||||||
|
"magma": "momae",
|
||||||
|
"plasma": "mose_mo-oo",
|
||||||
|
"cold_fire": "opese_mo",
|
||||||
|
"glass": "samomayi-i",
|
||||||
|
"molten_glass": "samomayi-i_momae",
|
||||||
|
"molten_rad_glass": "po-e_samomayi-i_momae",
|
||||||
|
"rad_glass": "po-e_samomayi-i",
|
||||||
|
"meat": "paemaca",
|
||||||
|
"rotten_meat": "paemaca-o",
|
||||||
|
"cooked_meat": "moe-e_paemaca",
|
||||||
|
"frozen_meat": "opese_paemaca",
|
||||||
|
"salt": "oopaema-mayi-i",
|
||||||
|
"molten_salt": "oopaema-mayi-i_momae",
|
||||||
|
"sugar": "paema-ae-mayi-i",
|
||||||
|
"flour": "oye_miha",
|
||||||
|
"wire": "pupayae",
|
||||||
|
"battery": "payae",
|
||||||
|
"cloner": "ya-a-a-u",
|
||||||
|
"sensor": "yasa",
|
||||||
|
"heater": "yamosu",
|
||||||
|
"cooler": "ya-opaso",
|
||||||
|
"random": "ae-o-e",
|
||||||
|
"image": "samolami",
|
||||||
|
"unpaint": "osamoce",
|
||||||
|
"uncharge": "opa",
|
||||||
|
"unburn": "omo",
|
||||||
|
"smash": "oyi",
|
||||||
|
"filler": "oo-u",
|
||||||
|
"lattice": "lacooya_oo-u",
|
||||||
|
"gravel": "mayi-i",
|
||||||
|
"slime": "samoca_mi-u_mae",
|
||||||
|
"cement": "mae_mayiya",
|
||||||
|
"dust": "mayi-i",
|
||||||
|
"void": "o-a-e-a",
|
||||||
|
"sun": "moo-oo-o",
|
||||||
|
"cell": "isamo-e_macasa",
|
||||||
|
"cancer": "isamo-e_macosa",
|
||||||
|
"dna": "isamo-e_macasa_i",
|
||||||
|
"plague": "oma-ima",
|
||||||
|
"worm": "macaimaepa",
|
||||||
|
"frozen_worm": "opese_macaimaepa",
|
||||||
|
"flea": "paemocamaemura_maco-i",
|
||||||
|
"termite": "mi-oosa_paemura_maco-i",
|
||||||
|
"ant": "maco-i",
|
||||||
|
"fly": "macamape_maco-i",
|
||||||
|
"firefly": "samo-e_macamape_maco-i",
|
||||||
|
"hive": "maco-i_halayi",
|
||||||
|
"bee": "mae-e_paema-ae-mayi-i_macamape_maco-i",
|
||||||
|
"stink_bug": "soo_maco-i",
|
||||||
|
"dead_bug": "oma_maco-i",
|
||||||
|
"human": "ha",
|
||||||
|
"body": "hasa",
|
||||||
|
"head": "haca",
|
||||||
|
"bird": "macamapa",
|
||||||
|
"rat": "macimoco-i",
|
||||||
|
"frog": "maca-omaepa",
|
||||||
|
"frozen_frog": "opese_maca-omaepa",
|
||||||
|
"tadpole": "maca-omae-i",
|
||||||
|
"fish": "macamae",
|
||||||
|
"frozen_fish": "opese_macamae",
|
||||||
|
"slug": "omaciyoo_maciyoomaci",
|
||||||
|
"snail": "maciyoomaci",
|
||||||
|
"burner": "moyae",
|
||||||
|
"superheater": "yaemosu-oo",
|
||||||
|
"freezer": "yae-opaso-oo",
|
||||||
|
"pipe": "mae_yapura",
|
||||||
|
"pipe_wall": "mae_yapura_yecaecayae",
|
||||||
|
"mixer": "yaru_o-alayu",
|
||||||
|
"grinder": "yaru_oyu",
|
||||||
|
"ewall": "pa_poo-e_yoo",
|
||||||
|
"torch": "yae_mo_a-a-u",
|
||||||
|
"spout": "yae_mae_a-a-u",
|
||||||
|
"udder": "paemae_a-a-u",
|
||||||
|
"bone_marrow": "mocomae-e_omahayi",
|
||||||
|
"bone": "omahayi",
|
||||||
|
"balloon": "mapa_lacooya-o",
|
||||||
|
"antipowder": "o-mayi-i-e",
|
||||||
|
"antimolten": "o-mamae",
|
||||||
|
"antifire": "o-mo",
|
||||||
|
"antifluid": "o-mae-e",
|
||||||
|
"antigas": "o-lamapa",
|
||||||
|
"vertical": "parusoo",
|
||||||
|
"horizontal": "parusae",
|
||||||
|
"ash": "omayi-i",
|
||||||
|
"molten_ash": "omayi-i_momae",
|
||||||
|
"light": "samo",
|
||||||
|
"liquid_light": "samo_mae-e",
|
||||||
|
"laser": "paruse_samo",
|
||||||
|
"ball": "pa_lacooya-o",
|
||||||
|
"pointer": "parusu_samo",
|
||||||
|
"charcoal": "mayimo",
|
||||||
|
"tinder": "mayimo-i",
|
||||||
|
"sawdust": "mi-oosa_mayi-i",
|
||||||
|
"hail": "opemaemapoo",
|
||||||
|
"hydrogen": "lama_a-i",
|
||||||
|
"oxygen": "lama_mapa",
|
||||||
|
"nitrogen": "lama_ra",
|
||||||
|
"helium": "lama_ca",
|
||||||
|
"anesthesia": "oca_lamapa",
|
||||||
|
"ammonia": "soo_lamapa",
|
||||||
|
"liquid_ammonia": "mae-e_soo_lamapa",
|
||||||
|
"carbon_dioxide": "hasamapa_lamapa",
|
||||||
|
"oil": "mae-e_mayimo",
|
||||||
|
"lamp_oil": "samoya_mae-e_mayimo",
|
||||||
|
"propane": "lamape_mayimo",
|
||||||
|
"methane": "soo_lamape_mayimo",
|
||||||
|
"liquid_methane": "mae-e_soo_lamape_mayimo",
|
||||||
|
"stained_glass": "samoce_samomayi-i",
|
||||||
|
"molten_stained_glass": "samoce_samomayi-i_momae",
|
||||||
|
"art": "hala_samolami",
|
||||||
|
"rainbow": "samoca_samoo-e_maemapa",
|
||||||
|
"static": "ayoo_samoca_mayi",
|
||||||
|
"border": "samoo",
|
||||||
|
"clay": "yecaecemayi-i",
|
||||||
|
"clay_soil": "yecaecemayi-i_mayi-i",
|
||||||
|
"brick": "mayiya",
|
||||||
|
"ruins": "sami_yoo",
|
||||||
|
"porcelain": "opu_mosa_yecaecemayi-i",
|
||||||
|
"sapling": "mi-oo-i",
|
||||||
|
"pinecone": "mi-oo-emi-oovi",
|
||||||
|
"evergreen": "poo-e_misa",
|
||||||
|
"cactus": "miyo",
|
||||||
|
"kelp": "mimae",
|
||||||
|
"seeds": "mi-i",
|
||||||
|
"grass_seed": "parusi_mi-i",
|
||||||
|
"wheat_seed": "miha_mi-i",
|
||||||
|
"straw": "omae-e_miha",
|
||||||
|
"paper": "lami",
|
||||||
|
"pollen": "mihe_miya",
|
||||||
|
"flower_seed": "miya-i",
|
||||||
|
"pistil": "miya_misa",
|
||||||
|
"petal": "samoce_miya_misa",
|
||||||
|
"tree_branch": "mi-oosa",
|
||||||
|
"vine": "parusoo_mi",
|
||||||
|
"bamboo_plant": "poopu_mi-i",
|
||||||
|
"foam": "mae-lacooya-o-oo",
|
||||||
|
"bubble": "mae-lacooya-o",
|
||||||
|
"acid": "oyu-mae-o",
|
||||||
|
"neutral_acid": "o-oyu-mae-o",
|
||||||
|
"acid_gas": "lamape_oyu-mae-o",
|
||||||
|
"glue": "yecaecuyi",
|
||||||
|
"soda": "paema-ae-mayi-i_mape_mae",
|
||||||
|
"gray_goo": "hacayi-o-oo",
|
||||||
|
"malware": "cuyaeru-o",
|
||||||
|
"ecloner": "paya-a-a-u",
|
||||||
|
"slow_cloner": "poya-a-a-u",
|
||||||
|
"clone_powder": "ya-a-a-u_mayi-i-e",
|
||||||
|
"floating_cloner": "macamape_ya-a-a-u",
|
||||||
|
"virus": "oma-ima",
|
||||||
|
"ice_nine": "poo-o_opemae",
|
||||||
|
"strange_matter": "poo-o_oyu",
|
||||||
|
"permafrost": "opese_mayi-imae",
|
||||||
|
"melted_butter": "o-alaye_paemae_momae",
|
||||||
|
"melted_cheese": "maye_paemae_momae",
|
||||||
|
"mushroom_spore": "mihe_mi-o",
|
||||||
|
"mushroom_stalk": "misa_mi-o",
|
||||||
|
"mushroom_gill": "misa_hasamapa_mi-o",
|
||||||
|
"mushroom_cap": "lacooyi-ae_misa_mi-o",
|
||||||
|
"hyphae": "lacooyi-o_misa_mi-o",
|
||||||
|
"mycelium": "mi-o_mayi-i",
|
||||||
|
"mulch": "me_mayi-i",
|
||||||
|
"ant_wall": "maco-i_maye_mayi-i",
|
||||||
|
"lichen": "mayi_mi",
|
||||||
|
"antimatter": "o-ayoo-e_a",
|
||||||
|
"plastic": "ye-a",
|
||||||
|
"molten_plastic": "ye-a_momae",
|
||||||
|
"cloth": "miyae",
|
||||||
|
"cellulose": "isamo-e_macasa_mae",
|
||||||
|
"wax": "moya-i_yemae",
|
||||||
|
"melted_wax": "moya-i_yemae_momae",
|
||||||
|
"incense": "soo_moya-i",
|
||||||
|
"fuse": "mo_miyae-i",
|
||||||
|
"dioxin": "lamape_ye-a-o",
|
||||||
|
"insulation": "o_mosa",
|
||||||
|
"sponge": "omaeyae",
|
||||||
|
"bamboo": "poopu_mi",
|
||||||
|
"iron": "mayi-ae-oo",
|
||||||
|
"copper": "mayipi-ae-oo",
|
||||||
|
"gold": "mayipa",
|
||||||
|
"steel": "poo_mayi-ae-oo",
|
||||||
|
"nickel": "ocehi_mayipi-ae-oo",
|
||||||
|
"zinc": "lacooyi_mayi-ae-oo",
|
||||||
|
"silver": "samo-e_mayi-ae-oo",
|
||||||
|
"tin": "yecaece_samo-e_mayi-ae-oo",
|
||||||
|
"lead": "o-ayoo-e_samo-e_mayi-ae-oo",
|
||||||
|
"aluminum": "oopaema-mayi-i_mayi-ae-oo",
|
||||||
|
"tungsten": "i-oo_mayi-ae-oo",
|
||||||
|
"molten_tungsten": "i-oo_mayi-ae-oo_momae",
|
||||||
|
"brass": "yecaece_lacooyi_mayipi-ae-oo",
|
||||||
|
"bronze": "poo_mayipi-ae-oo",
|
||||||
|
"sterling": "lamipu-oo_mayi-ae-oo",
|
||||||
|
"gallium": "opese_mae_mayi-ae-oo",
|
||||||
|
"molten_gallium": "mae_mayi-ae-oo",
|
||||||
|
"gallium_gas": "lamapa_mae_mayi-ae-oo",
|
||||||
|
"rose_gold": "samoci_mo-e_mayipa",
|
||||||
|
"purple_gold": "samoca_mae-oo-e_mayipa",
|
||||||
|
"blue_gold": "samoca_mae-oo-e_mayipa",
|
||||||
|
"electrum": "pa_mayipa",
|
||||||
|
"pyrite": "ocehi_mayipa",
|
||||||
|
"solder": "yecaecu_mayi-ae-oo",
|
||||||
|
"molten_copper": "mayipi-ae-oo_momae",
|
||||||
|
"molten_gold": "mayipa_momae",
|
||||||
|
"molten_silver": "samo-e_mayi-ae-oo_momae",
|
||||||
|
"molten_iron": "mayi-ae-oo_momae",
|
||||||
|
"molten_nickel": "ocehi_mayipi-ae-oo_momae",
|
||||||
|
"molten_tin": "yecaece_samo-e_mayi-ae-oo_momae",
|
||||||
|
"molten_lead": "o-ayoo-e_samo-e_mayi-ae-oo_momae",
|
||||||
|
"molten_solder": "yecaecu_mayi-ae-oo_momae",
|
||||||
|
"juice": "mi-ooyimae",
|
||||||
|
"juice_ice": "opese_mi-ooyimae",
|
||||||
|
"broth": "paemaca_mae",
|
||||||
|
"milk": "paemae",
|
||||||
|
"chocolate_milk": "samoca_mayi-i_paema-ae-mayi-i_paemae",
|
||||||
|
"fruit_milk": "mi-ooya_paemae",
|
||||||
|
"pilk": "caepayehapae",
|
||||||
|
"eggnog": "hi_maciyoo_paemae",
|
||||||
|
"egg": "hi_maciyoo",
|
||||||
|
"yolk": "hi_maciyoo_paema",
|
||||||
|
"hard_yolk": "mo-e_hi_maciyoo_paema",
|
||||||
|
"nut_milk": "mi-ooyi_paemae",
|
||||||
|
"dough": "o_mo-e_mihaya",
|
||||||
|
"batter": "o_mo-e_paema-ae-mayi-i_mihaya",
|
||||||
|
"homunculus": "yeha",
|
||||||
|
"butter": "o-alaye_paemae",
|
||||||
|
"cheese": "maye_paemae",
|
||||||
|
"rotten_cheese": "maye_paemae-o",
|
||||||
|
"chocolate": "samoca_mayi-i_paema-ae-mayi-i",
|
||||||
|
"grape": "mi-ooyi",
|
||||||
|
"vinegar": "soo-o_ocemae",
|
||||||
|
"herb": "misa-i",
|
||||||
|
"lettuce": "paemae-e_miha",
|
||||||
|
"pickle": "soo-o_ocemae_mi-ooya",
|
||||||
|
"tomato": "oo-u_mi-ooya",
|
||||||
|
"sauce": "oo-u_mi-ooya_mae",
|
||||||
|
"pumpkin": "mi-ooya-oo",
|
||||||
|
"pumpkin_seed": "mi-ooya-oo_mi-i",
|
||||||
|
"corn": "mayipa_miha",
|
||||||
|
"popcorn": "poomo-i_mayipa_miha",
|
||||||
|
"corn_seed": "mayipa_miha_mi-i",
|
||||||
|
"potato": "lacooyi-o_mi-ooya",
|
||||||
|
"baked_potato": "mo-e_lacooyi-o_mi-ooya",
|
||||||
|
"mashed_potato": "oye_lacooyi-o_mi-ooya",
|
||||||
|
"potato_seed": "lacooyi-o_mi-ooya_mi-i",
|
||||||
|
"root": "lacooyi-o_misa",
|
||||||
|
"fiber": "miyae-i",
|
||||||
|
"yeast": "mihaya_isamo-e_macasa",
|
||||||
|
"bread": "mihaya",
|
||||||
|
"toast": "mihayamo",
|
||||||
|
"gingerbread": "paema-ae-mayi-i_maye_mihaya",
|
||||||
|
"crumb": "mihayi",
|
||||||
|
"baked_batter": "paema-ae-mayi-i_mihaya",
|
||||||
|
"wheat": "miha",
|
||||||
|
"candy": "maye_paema-ae-mayi-i",
|
||||||
|
"coffee_bean": "pa_mi-ooyi",
|
||||||
|
"coffee_ground": "mayi-i_pa_mi-ooyi",
|
||||||
|
"nut": "mi-ooyi",
|
||||||
|
"nut_meat": "mi-ooyi_paemaca",
|
||||||
|
"nut_butter": "mae-e_mi-ooyi",
|
||||||
|
"jelly": "mae_paema-ae-mayi-i_mi-ooyi",
|
||||||
|
"baking_soda": "oopaema-mayi-i-e_hasamapa_lamapa",
|
||||||
|
"yogurt": "paeme_paemae-o",
|
||||||
|
"frozen_yogurt": "opese_paeme_paemae-o",
|
||||||
|
"ice_cream": "opese_paemae",
|
||||||
|
"cream": "paemae-i",
|
||||||
|
"beans": "mae_mi-ooyi",
|
||||||
|
"dry_ice": "opese_hasamapa_lamapa",
|
||||||
|
"nitrogen_ice": "opese_lama_ra",
|
||||||
|
"particleboard": "yecaece_mi-oosa",
|
||||||
|
"skin": "",
|
||||||
|
"hair": "hacasa_miyae-i",
|
||||||
|
"alcohol": "ocemae",
|
||||||
|
"alcohol_gas": "lamape_ocemae",
|
||||||
|
"basalt": "mayamo_mayi",
|
||||||
|
"tuff": "omayi-i_mayi",
|
||||||
|
"molten_tuff": "omayi-i_mayi_momae",
|
||||||
|
"soap": "mae-u-e_mayi",
|
||||||
|
"bleach": "mae-e_mae-u-e",
|
||||||
|
"chlorine": "lamape_mae-u-e",
|
||||||
|
"liquid_chlorine": "mae-e_lamape_mae-u-e",
|
||||||
|
"dye": "samocaya",
|
||||||
|
"ink": "osamoca_samocaya",
|
||||||
|
"mercury": "mae_samo-e_mayi-ae-oo",
|
||||||
|
"mercury_gas": "lamape_mae_samo-e_mayi-ae-oo",
|
||||||
|
"solid_mercury": "maye_mae_samo-e_mayi-ae-oo",
|
||||||
|
"blood": "mocomae",
|
||||||
|
"vaccine": "o-oma-ima",
|
||||||
|
"antibody": "mocomae_o-oma-ima",
|
||||||
|
"infection": "oma_ime",
|
||||||
|
"poison": "mae-oma",
|
||||||
|
"poison_gas": "lamape_mae-oma",
|
||||||
|
"poison_ice": "maye_mae-oma",
|
||||||
|
"antidote": "o-oma-ima",
|
||||||
|
"tea": "misa_mae",
|
||||||
|
"coffee": "mae_pa_mi-ooyi",
|
||||||
|
"honey": "mae-e_paema-ae-mayi-i",
|
||||||
|
"sap": "mi-oo_mae-e_paema-ae-mayi-i",
|
||||||
|
"amber": "maye_mi-oo_mae-e_paema-ae-mayi-",
|
||||||
|
"caramel": "paema-ae-mayi_momae",
|
||||||
|
"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": "",
|
||||||
|
"freeze_ray": "",
|
||||||
|
"pop": "",
|
||||||
|
"explosion": "",
|
||||||
|
"n_explosion": "",
|
||||||
|
"supernova": "",
|
||||||
|
"cook": "",
|
||||||
|
"incinerate": "",
|
||||||
|
"room_temp": "",
|
||||||
|
"positron": "",
|
||||||
|
"tnt": "",
|
||||||
|
"c4": "",
|
||||||
|
"grenade": "",
|
||||||
|
"dynamite": "",
|
||||||
|
"gunpowder": "",
|
||||||
|
"ember": "",
|
||||||
|
"firework": "",
|
||||||
|
"fw_ember": "",
|
||||||
|
"nuke": "",
|
||||||
|
"h_bomb": "",
|
||||||
|
"dirty_bomb": "",
|
||||||
|
"emp_bomb": "",
|
||||||
|
"nitro": "",
|
||||||
|
"greek_fire": "",
|
||||||
|
"fireball": "",
|
||||||
|
"rocket": "",
|
||||||
|
"cold_bomb": "",
|
||||||
|
"hot_bomb": "",
|
||||||
|
"antimatter_bomb": "",
|
||||||
|
"party_popper": "",
|
||||||
|
"flashbang": "",
|
||||||
|
"flash": "",
|
||||||
|
"smoke_grenade": "",
|
||||||
|
"landmine": "",
|
||||||
|
"armageddon": "",
|
||||||
|
"tesla_coil": "",
|
||||||
|
"light_bulb": "",
|
||||||
|
"shocker": "",
|
||||||
|
"pressure_plate": "",
|
||||||
|
"primordial_soup": "",
|
||||||
|
"molten_slag": "",
|
||||||
|
"molten_dirt": "",
|
||||||
|
"debug": "",
|
||||||
|
"prop": "",
|
||||||
|
"salt_ice": "",
|
||||||
|
"sugar_ice": "",
|
||||||
|
"seltzer_ice": "",
|
||||||
|
"dirty_ice": "",
|
||||||
|
"pool_ice": "",
|
||||||
|
"blood_ice": "",
|
||||||
|
"antibody_ice": "",
|
||||||
|
"infection_ice": "",
|
||||||
|
"unknown": "",
|
||||||
|
"slime_ice": "",
|
||||||
|
"antiice": "",
|
||||||
|
"ammonia_ice": "",
|
||||||
|
"liquid_propane": "",
|
||||||
|
"methane_ice": "",
|
||||||
|
"molten_brick": "",
|
||||||
|
"acid_ice": "",
|
||||||
|
"soda_ice": "",
|
||||||
|
"molten_steel": "",
|
||||||
|
"molten_brass": "",
|
||||||
|
"molten_bronze": "",
|
||||||
|
"molten_sterling": "",
|
||||||
|
"molten_rose_gold": "",
|
||||||
|
"molten_purple_gold": "",
|
||||||
|
"molten_blue_gold": "",
|
||||||
|
"molten_electrum": "",
|
||||||
|
"molten_pyrite": "",
|
||||||
|
"broth_ice": "",
|
||||||
|
"frozen_vinegar": "",
|
||||||
|
"sauce_ice": "",
|
||||||
|
"alcohol_ice": "",
|
||||||
|
"bleach_ice": "",
|
||||||
|
"chlorine_ice": "",
|
||||||
|
"frozen_ink": "",
|
||||||
|
"tea_ice": "",
|
||||||
|
"coffee_ice": "",
|
||||||
|
"hydrogen_ice": "",
|
||||||
|
"oxygen_ice": "",
|
||||||
|
"molten_amalgam": "",
|
||||||
|
"neon_ice": "",
|
||||||
|
"cyanide_ice": "",
|
||||||
|
"molten_copper_sulfate": "",
|
||||||
|
"molten_alga": "",
|
||||||
|
"molten_metal_scrap": "",
|
||||||
|
"molten_borax": "",
|
||||||
|
"molten_epsom_salt": "",
|
||||||
|
"molten_potassium_salt": "",
|
||||||
|
"molten_sodium_acetate": "",
|
||||||
|
"frozen_nitro": "",
|
||||||
|
"cured_meat": "",
|
||||||
|
"nut_oil": "",
|
||||||
|
"grease": "",
|
||||||
|
"fat": "",
|
||||||
|
"potassium": "",
|
||||||
|
"molten_potassium": "",
|
||||||
|
"magnesium": "",
|
||||||
|
"molten_magnesium": "",
|
||||||
|
"sandstorm": "",
|
||||||
|
"caustic_potash": "",
|
||||||
|
"antibomb": "",
|
||||||
|
"tornado": "",
|
||||||
|
"earthquake": "",
|
||||||
|
"tsunami": "",
|
||||||
|
"blaster": "",
|
||||||
|
"propane_ice": "",
|
||||||
|
"molten_caustic_potash": ""
|
||||||
|
}
|
||||||
|
|
@ -157,7 +157,6 @@
|
||||||
<tr><td>jaydsfunctions.js</td><td>Adds extra tools</td><td>Jayd</td></tr>
|
<tr><td>jaydsfunctions.js</td><td>Adds extra tools</td><td>Jayd</td></tr>
|
||||||
<tr><td>insane_random_events.js</td><td>Massively buffs random events</td><td>Alice</td></tr>
|
<tr><td>insane_random_events.js</td><td>Massively buffs random events</td><td>Alice</td></tr>
|
||||||
<tr><td>invertscroll.js</td><td>Inverts the scroll wheel for adjusting brush size</td><td>SquareScreamYT</td></tr>
|
<tr><td>invertscroll.js</td><td>Inverts the scroll wheel for adjusting brush size</td><td>SquareScreamYT</td></tr>
|
||||||
<tr><td>mobile_shift.js</td><td>Adds a button for shift on mobile</td><td>SquareScreamYT</td></tr>
|
|
||||||
<tr><td>moretools.js</td><td>Adds more temperature-modifying tools (±10/tick, ±50/tick, and absolute zero tools)</td><td>Sightnado</td></tr>
|
<tr><td>moretools.js</td><td>Adds more temperature-modifying tools (±10/tick, ±50/tick, and absolute zero tools)</td><td>Sightnado</td></tr>
|
||||||
<tr><td>move_tools.js</td><td>Adds tools that move pixels</td><td>Alice</td></tr>
|
<tr><td>move_tools.js</td><td>Adds tools that move pixels</td><td>Alice</td></tr>
|
||||||
<tr><td>noconfirm.js</td><td>Removes all confirmation pop ups</td><td>mollthecoder</td></tr>
|
<tr><td>noconfirm.js</td><td>Removes all confirmation pop ups</td><td>mollthecoder</td></tr>
|
||||||
|
|
@ -385,9 +384,10 @@
|
||||||
|
|
||||||
<!----><tr><td class="modCat" colspan="3">Broken or Deprecated</td></tr><!---->
|
<!----><tr><td class="modCat" colspan="3">Broken or Deprecated</td></tr><!---->
|
||||||
<tr class="deprecated"><td>humans.js</td><td>Adds humans. Now part of the base game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr class="deprecated"><td>humans.js</td><td>Adds humans. Now part of the base game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
|
<tr class="deprecated"><td>mobile_shift.js</td><td>Adds a button for shift on mobile (Now in the base game)</td><td>SquareScreamYT</td></tr>
|
||||||
|
<tr class="deprecated"><td>nopixellimit.js</td><td>Removes the pixel limit. (now a setting)</td><td>Jayd</td></tr>
|
||||||
<tr class="deprecated"><td>unhide.js</td><td>Unhides all elements except molten ones. (This functionality now exists as a vanilla setting)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr class="deprecated"><td>unhide.js</td><td>Unhides all elements except molten ones. (This functionality now exists as a vanilla setting)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
<tr class="deprecated"><td>wheel_fix.js</td><td>Attempts to fix the brush scaling too much with the mouse wheel for some people. Deprecated</td><td>Nubo318</td></tr>
|
<tr class="deprecated"><td>wheel_fix.js</td><td>Attempts to fix the brush scaling too much with the mouse wheel for some people. Deprecated</td><td>Nubo318</td></tr>
|
||||||
<tr class="deprecated"><td>nopixellimit.js</td><td>Removes the pixel limit. (now a setting)</td><td>Jayd</td></tr>
|
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
function shade(ctx, color, x1, y1, radius=3, opacity) {
|
||||||
|
var offsetCorrection = 0;
|
||||||
|
if (pixelSize === 8){
|
||||||
|
offsetCorrection = 4;
|
||||||
|
}
|
||||||
|
else if (pixelSize === 6){
|
||||||
|
offsetCorrection = 3;
|
||||||
|
}
|
||||||
|
else if (pixelSize === 4){
|
||||||
|
offsetCorrection = 2;
|
||||||
|
}
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.arc(x1*pixelSize+offsetCorrection, y1*pixelSize+offsetCorrection, radius*pixelSize, 0, 2 * Math.PI, false);
|
||||||
|
ctx.fillStyle = color;
|
||||||
|
ctx.globalAlpha = opacity;
|
||||||
|
ctx.fill();
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.shader_test = {
|
||||||
|
color: "#FFFFFF",
|
||||||
|
category: "special",
|
||||||
|
renderer: function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.5)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elements.fire.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.25)
|
||||||
|
}
|
||||||
|
elements.cold_fire.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.25)
|
||||||
|
}
|
||||||
|
elements.light.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 2, 0.75)
|
||||||
|
}
|
||||||
|
elements.laser.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 2, 0.75)
|
||||||
|
}
|
||||||
|
elements.plasma.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.5)
|
||||||
|
}
|
||||||
|
elements.electric.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 2, 0.25)
|
||||||
|
}
|
||||||
|
elements.heat_ray.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.25)
|
||||||
|
}
|
||||||
|
elements.freeze_ray.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.25)
|
||||||
|
}
|
||||||
|
elements.flash.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.7)
|
||||||
|
}
|
||||||
|
elements.smoke.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 2, 0.25)
|
||||||
|
}
|
||||||
|
elements.radiation.renderer = function(pixel,ctx) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 2, 0.25)
|
||||||
|
}
|
||||||
|
elements.led_r.renderer = function(pixel,ctx) {
|
||||||
|
if (pixel.charge) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.5)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 0, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elements.led_g.renderer = function(pixel,ctx) {
|
||||||
|
if (pixel.charge) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.5)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 0, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elements.led_b.renderer = function(pixel,ctx) {
|
||||||
|
if (pixel.charge) {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 3, 0.5)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
shade(ctx, pixel.color, pixel.x, pixel.y, 0, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,140 @@
|
||||||
|
// element_UI.js - Redbirdly's Mod that adds an alternative square element UI
|
||||||
|
|
||||||
|
// Convert any html-valid color into RGB
|
||||||
|
function cssColorToRGB(color) {
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.style.color = color;
|
||||||
|
document.body.appendChild(div);
|
||||||
|
const computedColor = window.getComputedStyle(div).color;
|
||||||
|
document.body.removeChild(div);
|
||||||
|
const rgbValues = computedColor.match(/\d+/g).map(Number);
|
||||||
|
return rgbValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getColorBrightness(color) {
|
||||||
|
const [r, g, b] = cssColorToRGB(color);
|
||||||
|
return (r * 299 + g * 587 + b * 114) / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createButtons(elements, inputDivId, currentCategory) {
|
||||||
|
const elementControls = document.getElementById('elementControls');
|
||||||
|
const existingContainer = document.getElementById('grid-container');
|
||||||
|
if (existingContainer) {
|
||||||
|
existingContainer.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
const container = document.createElement('div');
|
||||||
|
container.id = 'grid-container';
|
||||||
|
Object.assign(container.style, {
|
||||||
|
display: 'grid',
|
||||||
|
gap: '5px',
|
||||||
|
maxHeight: '280px',
|
||||||
|
overflowY: 'hidden',
|
||||||
|
overflowX: 'auto',
|
||||||
|
scrollbarColor: 'rgba(255, 255, 255, 0.25) rgba(255, 255, 255, 0.1)',
|
||||||
|
scrollbarWidth: 'thin'
|
||||||
|
});
|
||||||
|
|
||||||
|
const buttonNames = [];
|
||||||
|
let numButtons = 0;
|
||||||
|
let numColumns = 0;
|
||||||
|
|
||||||
|
for (let index in elements) {
|
||||||
|
if (elements.hasOwnProperty(index) && elements[index].category !== "tools" && elements[index].category === currentCategory) {
|
||||||
|
const name = index.replace(/_/g, ' ');
|
||||||
|
numButtons++;
|
||||||
|
let color = 'gray';
|
||||||
|
if (elements[index].color !== undefined) {
|
||||||
|
if (typeof elements[index].color === 'string') {
|
||||||
|
color = elements[index].color;
|
||||||
|
} else if (Array.isArray(elements[index].color)) {
|
||||||
|
color = elements[index].color[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buttonNames.push({ name, color });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
numColumns = Math.ceil(numButtons / 3);
|
||||||
|
container.style.gridTemplateColumns = `repeat(${numColumns}, 60px)`;
|
||||||
|
container.style.gridTemplateRows = 'repeat(3, 60px)';
|
||||||
|
|
||||||
|
buttonNames.forEach((buttonInfo, index) => {
|
||||||
|
const button = document.createElement('div');
|
||||||
|
button.className = 'grid-item';
|
||||||
|
button.style.backgroundColor = buttonInfo.color;
|
||||||
|
button.innerText = buttonInfo.name;
|
||||||
|
const brightness = getColorBrightness(buttonInfo.color);
|
||||||
|
button.style.color = brightness > 210 ? 'black' : 'white';
|
||||||
|
Object.assign(button.style, {
|
||||||
|
width: '60px',
|
||||||
|
height: '60px',
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center',
|
||||||
|
fontSize: '8px',
|
||||||
|
cursor: 'pointer',
|
||||||
|
border: '4px solid transparent',
|
||||||
|
borderRadius: '0px',
|
||||||
|
textAlign: 'center',
|
||||||
|
wordWrap: 'break-word',
|
||||||
|
transition: 'background-color 0.3s, color 0.3s, border 0.3s'
|
||||||
|
});
|
||||||
|
|
||||||
|
button.addEventListener('click', function() {
|
||||||
|
document.querySelectorAll('.grid-item').forEach(btn => {
|
||||||
|
btn.classList.remove('selected');
|
||||||
|
btn.style.border = '4px solid transparent';
|
||||||
|
});
|
||||||
|
button.classList.add('selected');
|
||||||
|
button.style.border = '4px solid white';
|
||||||
|
currentElement = buttonInfo.name.replace(' ', '_');
|
||||||
|
const element = elements[currentElement];
|
||||||
|
if (element && typeof element.onSelect === 'function') {
|
||||||
|
element.onSelect();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
container.appendChild(button);
|
||||||
|
});
|
||||||
|
|
||||||
|
const inputDiv = document.createElement('div');
|
||||||
|
inputDiv.id = inputDivId;
|
||||||
|
|
||||||
|
elementControls.insertAdjacentElement('afterend', container);
|
||||||
|
container.insertAdjacentElement('afterend', inputDiv);
|
||||||
|
elementControls.style.display = 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCurrentCategory() {
|
||||||
|
const categoryButtons = document.querySelectorAll('[current="true"]');
|
||||||
|
if (categoryButtons.length === 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return categoryButtons[0].id.replace("categoryButton-", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectCategory(category) {
|
||||||
|
if (!category) { return; }
|
||||||
|
const categoryButton = document.getElementById("categoryButton-"+category);
|
||||||
|
if (!categoryButton) { return; }
|
||||||
|
if (categoryButton.classList.contains("notify")) {
|
||||||
|
categoryButton.classList.remove("notify");
|
||||||
|
}
|
||||||
|
const categoryDiv = document.getElementById("category-"+category);
|
||||||
|
for (let i = 0; i < categoryButton.parentNode.children.length; i++) {
|
||||||
|
const e = categoryDiv.parentNode.children[i];
|
||||||
|
e.style.display = "none";
|
||||||
|
document.getElementById("categoryButton-"+e.getAttribute("category")).setAttribute("current", false);
|
||||||
|
}
|
||||||
|
categoryDiv.style.display = "block";
|
||||||
|
categoryButton.setAttribute("current", true);
|
||||||
|
createButtons(elements, 'input-div', category);
|
||||||
|
}
|
||||||
|
|
||||||
|
const initialCategory = getCurrentCategory();
|
||||||
|
if (initialCategory) {
|
||||||
|
selectCategory(initialCategory);
|
||||||
|
}
|
||||||
|
|
||||||
|
selectElement("sand");
|
||||||
|
|
@ -0,0 +1,325 @@
|
||||||
|
// mod by nekonico :3
|
||||||
|
|
||||||
|
behaviors.CAR_DELETE = function(pixel) {
|
||||||
|
if (carDieSound) { createPixel("car_explosion",pixel.x, pixel.y), carDieSound.play(); }
|
||||||
|
},
|
||||||
|
|
||||||
|
behaviors.CARFEEDPIXEL = function(pixel) {
|
||||||
|
if (!pixel.food) { pixel.food = 1, carDieSound.play(); }
|
||||||
|
else { pixel.food ++, carDieSound.play(); }
|
||||||
|
if (pixel.food > (elements[pixel.element].foodNeed||30)) {
|
||||||
|
// loop through adjacentCoords and check each pixel to lay an egg
|
||||||
|
for (var i = 0; i < adjacentCoords.length; i++) {
|
||||||
|
var x = pixel.x+adjacentCoords[i][0];
|
||||||
|
var y = pixel.y+adjacentCoords[i][1];
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
if (elements[pixel.element].egg) {
|
||||||
|
createPixel(elements[pixel.element].egg,x,y)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
createPixel("egg",x,y)
|
||||||
|
pixelMap[x][y].animal = elements[pixel.element].baby || pixel.element;
|
||||||
|
if (elements[pixel.element].eggColor) {
|
||||||
|
pixelMap[x][y].color = pixelColorPick(pixelMap[x][y],elements[pixel.element].eggColor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pixel.food = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
document.onkeydown = function(ki)/*keyboard_input*/ {
|
||||||
|
//w
|
||||||
|
if (ki.keyCode == 87) {
|
||||||
|
KW = true;
|
||||||
|
//vY ++;
|
||||||
|
}
|
||||||
|
//s
|
||||||
|
if (ki.keyCode == 83) {
|
||||||
|
KS = true;
|
||||||
|
//vY ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.onkeyup = function(i2)/*keyboard_input*/ {
|
||||||
|
//w
|
||||||
|
if (i2.keyCode == 87) {
|
||||||
|
garnWalkSound.pause()
|
||||||
|
KW = false
|
||||||
|
//vY = 0;
|
||||||
|
}
|
||||||
|
//s
|
||||||
|
if (i2.keyCode == 83) {
|
||||||
|
garnWalkSound.pause()
|
||||||
|
KS = false
|
||||||
|
//vY = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var KA = false;
|
||||||
|
var KD = false;
|
||||||
|
var KW = false;
|
||||||
|
var KS = false;
|
||||||
|
var vX = 1;
|
||||||
|
var vY = 1;
|
||||||
|
elements.garn = {
|
||||||
|
name: "garn47",
|
||||||
|
color: "#52562B",
|
||||||
|
category: "special",
|
||||||
|
properties: {
|
||||||
|
dead: false,
|
||||||
|
dir: 1,
|
||||||
|
panic: 0
|
||||||
|
},
|
||||||
|
onPlace: function(pixel) {
|
||||||
|
if (isEmpty(pixel.x, pixel.y+1)) {
|
||||||
|
createPixel("garn_body", pixel.x, pixel.y+1);
|
||||||
|
pixel.element = "garn_head";
|
||||||
|
}
|
||||||
|
else if (isEmpty(pixel.x, pixel.y-1)) {
|
||||||
|
createPixel("garn_head", pixel.x, pixel.y-1);
|
||||||
|
pixelMap[pixel.x][pixel.y-1].color = pixel.color;
|
||||||
|
pixel.element = "garn_body";
|
||||||
|
pixel.color = pixelColorPick(pixel)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
related: ["garn_body","garn_head"],
|
||||||
|
cooldown: defaultCooldown,
|
||||||
|
forceSaveColor: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
elements.garn_body = {
|
||||||
|
name: "garn",
|
||||||
|
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 == "garn_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]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*if (vX === 3) {
|
||||||
|
vX --;
|
||||||
|
}
|
||||||
|
if (vY === 3) {
|
||||||
|
vY --;
|
||||||
|
}*/
|
||||||
|
if (KS === true && isEmpty(pixel.x-2, pixel.y-1) && isEmpty(pixel.x-2, pixel.y)) {
|
||||||
|
tryMove (pixel,pixel.x-1,pixel.y)
|
||||||
|
garnWalkSound.play();
|
||||||
|
}
|
||||||
|
if (KW === true && isEmpty(pixel.x+2, pixel.y-1) && isEmpty(pixel.x+2, pixel.y)) {
|
||||||
|
tryMove (pixel,pixel.x+1,pixel.y)
|
||||||
|
garnWalkSound.play();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
category: "special",
|
||||||
|
states:"solid",
|
||||||
|
color:"#52562B",
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.garn_head = {
|
||||||
|
name: "garn",
|
||||||
|
tick: function(pixel) {
|
||||||
|
/*if (vX === 3) {
|
||||||
|
vX --;
|
||||||
|
}
|
||||||
|
if (vY === 3) {
|
||||||
|
vY --;
|
||||||
|
}*/
|
||||||
|
if (KS === true && isEmpty(pixel.x-2, pixel.y+1) && isEmpty(pixel.x-2, pixel.y)) {
|
||||||
|
tryMove (pixel,pixel.x-1,pixel.y)
|
||||||
|
garnWalkSound.play();
|
||||||
|
}
|
||||||
|
if (KW === true && isEmpty(pixel.x+2, pixel.y+1) && isEmpty(pixel.x+2, pixel.y)) {
|
||||||
|
tryMove (pixel,pixel.x+1,pixel.y)
|
||||||
|
garnWalkSound.play();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
category: "special",
|
||||||
|
states:"solid",
|
||||||
|
color:"#52562B",
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.car = { // totally carnular
|
||||||
|
color: ["#9F8578","#A07D6A"],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|FX%0.25 AND CH:car_slide%1|XX",
|
||||||
|
"XX|M1|XX",
|
||||||
|
],
|
||||||
|
reactions: {
|
||||||
|
"meat": { elem2:null, chance:0.2, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"cooked_meat": { elem2:null, chance:0.2, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"": { elem2:null, chance:0.2, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"meat": { elem2:null, chance:0.2, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"oxygen": { elem2:"carbon_dioxide", chance:0.3 },
|
||||||
|
"uranium": { elem2:null, chance:0.1, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"milk": { elem2:null, chance:0.1, func:behaviors.CARFEEDPIXEL },
|
||||||
|
},
|
||||||
|
onDelete: behaviors.CAR_DELETE,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.start === pixelTicks) {return}
|
||||||
|
if (!tryMove(pixel, pixel.x, pixel.y+1)) {
|
||||||
|
if (pixel.fall < 20) {
|
||||||
|
if (Math.random() < 0.5) {
|
||||||
|
if (!tryMove(pixel, pixel.x+1, pixel.y+1)) {
|
||||||
|
tryMove(pixel, pixel.x-1, pixel.y+1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!tryMove(pixel, pixel.x-1, pixel.y+1)) {
|
||||||
|
tryMove(pixel, pixel.x+1, pixel.y+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pixel.fall = 0;
|
||||||
|
}
|
||||||
|
else if (outOfBounds(pixel.x,pixel.y+1) || (!isEmpty(pixel.x,pixel.y+1,true) && elements.egg.ignore.indexOf(pixelMap[pixel.x][pixel.y+1].element) === -1 && elements[pixelMap[pixel.x][pixel.y+1].element].state === "solid")) {
|
||||||
|
pixel.element = "car_explosion"
|
||||||
|
carDieSound.play();
|
||||||
|
}
|
||||||
|
else {pixel.fall = 0}
|
||||||
|
}
|
||||||
|
else {pixel.fall ++}
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
ignore: ["paper","sponge","straw","wheat","rat","frog","pollen","clay","snow","mud","wet_sand","tinder","feather","bread","ice_cream","dough"],
|
||||||
|
innerColor: "#9F8578",
|
||||||
|
properties: { "fall":0 },
|
||||||
|
egg: "car",
|
||||||
|
foodNeed: 100,
|
||||||
|
maxSize: 1,
|
||||||
|
cooldown: 10,
|
||||||
|
temp: 20,
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "car_explosion",
|
||||||
|
category:"life",
|
||||||
|
burn:15,
|
||||||
|
burnTime:300,
|
||||||
|
state: "solid",
|
||||||
|
density: 1450,
|
||||||
|
conduct: 0.2
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.car_slide = {
|
||||||
|
name: "car",
|
||||||
|
hidden: true,
|
||||||
|
color: ["#9F8578","#A07D6A"],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|FX%0.25 AND CH:car%10|M2 AND BO",
|
||||||
|
"XX|M1|XX",
|
||||||
|
],
|
||||||
|
reactions: {
|
||||||
|
"meat": { elem2:null, chance:0.2, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"cooked_meat": { elem2:null, chance:0.2, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"oxygen": { elem2:"carbon_dioxide", chance:0.3 },
|
||||||
|
"uranium": { elem2:null, chance:0.1, func:behaviors.CARFEEDPIXEL },
|
||||||
|
"milk": { elem2:null, chance:0.1, func:behaviors.CARFEEDPIXEL },
|
||||||
|
},
|
||||||
|
onDelete: behaviors.CAR_DELETE,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.start === pixelTicks) {return}
|
||||||
|
if (!tryMove(pixel, pixel.x, pixel.y+1)) {
|
||||||
|
if (pixel.fall < 20) {
|
||||||
|
if (Math.random() < 0.5) {
|
||||||
|
if (!tryMove(pixel, pixel.x+1, pixel.y+1)) {
|
||||||
|
tryMove(pixel, pixel.x-1, pixel.y+1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!tryMove(pixel, pixel.x-1, pixel.y+1)) {
|
||||||
|
tryMove(pixel, pixel.x+1, pixel.y+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pixel.fall = 0;
|
||||||
|
}
|
||||||
|
else if (outOfBounds(pixel.x,pixel.y+1) || (!isEmpty(pixel.x,pixel.y+1,true) && elements.egg.ignore.indexOf(pixelMap[pixel.x][pixel.y+1].element) === -1 && elements[pixelMap[pixel.x][pixel.y+1].element].state === "solid")) {
|
||||||
|
pixel.element = "car_explosion"
|
||||||
|
carDieSound.play();
|
||||||
|
}
|
||||||
|
else {pixel.fall = 0}
|
||||||
|
}
|
||||||
|
else {pixel.fall ++}
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
ignore: ["paper","sponge","straw","wheat","rat","frog","pollen","clay","snow","mud","wet_sand","tinder","feather","bread","ice_cream","dough"],
|
||||||
|
innerColor: "#9F8578",
|
||||||
|
properties: { "fall":0 },
|
||||||
|
egg: "car",
|
||||||
|
foodNeed: 100,
|
||||||
|
maxSize: 1,
|
||||||
|
cooldown: 10,
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "car_explosion",
|
||||||
|
category:"life",
|
||||||
|
burn:15,
|
||||||
|
burnTime:300,
|
||||||
|
state: "solid",
|
||||||
|
density: 1450,
|
||||||
|
conduct: 0.2
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.car_explosion = {
|
||||||
|
name: "explosion",
|
||||||
|
color: ["#9F8578","#A07D6A"],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|EX:5>smoke,fire,smoke,fire,fire,car_shard|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
temp: 300,
|
||||||
|
category: "energy",
|
||||||
|
state: "gas",
|
||||||
|
density: 1000,
|
||||||
|
excludeRandom: true,
|
||||||
|
noMix: true
|
||||||
|
},
|
||||||
|
elements.car_shard = {
|
||||||
|
name: "glass_shard",
|
||||||
|
color: ["#9F8578","#A07D6A"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
reactions: {
|
||||||
|
"radiation": { elem1:"rad_shard", chance:0.33 },
|
||||||
|
"rad_steam": { elem1:"rad_shard", elem2:null, chance:0.33 },
|
||||||
|
"fallout": { elem1:"rad_shard", elem2:"radiation", chance:0.1 }
|
||||||
|
},
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
category: "powders",
|
||||||
|
state: "solid",
|
||||||
|
density: 2500
|
||||||
|
},
|
||||||
|
|
||||||
|
carSound = null;
|
||||||
|
carDieSound = null;
|
||||||
|
carEatSound = null;
|
||||||
|
|
||||||
|
elements.car.onSelect = function() {
|
||||||
|
carSound = new Audio("https://static.wikia.nocookie.net/garn47/images/b/b9/Hello-its-me-car-made-with-Voicemod.mp3/revision/latest?cb=20240824212531");
|
||||||
|
carDieSound = new Audio("https://static.wikia.nocookie.net/garn47/images/3/3e/Car-scream-made-with-Voicemod.mp3/revision/latest?cb=20240824214753");
|
||||||
|
carEatSound = new Audio("https://static.wikia.nocookie.net/garn47/images/1/1e/Car-eating-made-with-Voicemod.mp3/revision/latest?cb=20240824220937");
|
||||||
|
}
|
||||||
|
elements.car.onMouseDown = function() {
|
||||||
|
if (carSound) { carSound.play(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
garnSound = null;
|
||||||
|
garnWalkSound = null;
|
||||||
|
|
||||||
|
elements.garn.onSelect = function() {
|
||||||
|
garnSound = new Audio("https://static.wikia.nocookie.net/garn47/images/1/17/Garnular2.mp3/revision/latest?cb=20240614060855");
|
||||||
|
garnWalkSound = new Audio("https://static.wikia.nocookie.net/garn47/images/8/8b/Garn47-Ingame-Walking.mp3/revision/latest?cb=20240606045834");
|
||||||
|
}
|
||||||
|
elements.garn.onMouseDown = function() {
|
||||||
|
if (garnSound) { garnSound.play(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// totally garnular
|
||||||
|
|
@ -13,9 +13,12 @@ elements.ecofriendly_wood_veneer = {
|
||||||
burnInto: ["ember","charcoal","fire"],
|
burnInto: ["ember","charcoal","fire"],
|
||||||
hardness: 0.15,
|
hardness: 0.15,
|
||||||
breakInto: "sawdust",
|
breakInto: "sawdust",
|
||||||
|
reactions: {
|
||||||
|
"algae": {elem2: "lichen"},
|
||||||
|
}
|
||||||
};
|
};
|
||||||
elements.screws_borrowed_from_aunt = {
|
elements.screws_borrowed_from_aunt = {
|
||||||
color: "#687281",
|
color: ["#687281", "#e4e7ed", "#687281", "#4f5969", "#939ead"],
|
||||||
behavior: behaviors.POWDER,
|
behavior: behaviors.POWDER,
|
||||||
category: "powders",
|
category: "powders",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
@ -24,9 +27,27 @@ elements.screws_borrowed_from_aunt = {
|
||||||
breakInto: "metal_scrap",
|
breakInto: "metal_scrap",
|
||||||
hardness: 0.8,
|
hardness: 0.8,
|
||||||
conduct: 0.9,
|
conduct: 0.9,
|
||||||
|
density: 3000,
|
||||||
|
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},
|
||||||
|
"coffee": {elem1: "rust", chance: 0.0002},
|
||||||
|
"tea": {elem1: "rust", chance: 0.0002},
|
||||||
|
"broth": {elem1: "rust", chance: 0.0002},
|
||||||
|
"juice": {elem1: "rust", chance: 0.0002},
|
||||||
|
"nut_milk": {elem1: "rust", chance: 0.0002},
|
||||||
|
}
|
||||||
};
|
};
|
||||||
elements.galvanized_square_steel = {
|
elements.galvanized_square_steel = {
|
||||||
color: "#4a535c",
|
color: "#545e69",
|
||||||
behavior: behaviors.WALL,
|
behavior: behaviors.WALL,
|
||||||
category: "solids",
|
category: "solids",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
@ -47,3 +68,5 @@ elements.molten_galvanized_square_steel = {
|
||||||
conduct: 0.5,
|
conduct: 0.5,
|
||||||
hidden: true
|
hidden: true
|
||||||
};
|
};
|
||||||
|
if (!elements.steel.reactions) elements.molten_zinc.reactions = {};
|
||||||
|
elements.steel.reactions.molten_zinc = { elem1: "galvanized_square_steel", elem2: null }
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,270 @@
|
||||||
|
// Define the corrected biomes with heights
|
||||||
|
var mercuryLayers = [
|
||||||
|
{ layers: ["basalt", "iron"], height: 0.6 },
|
||||||
|
{ layers: ["nickel"], height: 0.2 },
|
||||||
|
{ layers: ["iron"], height: 0.2 }
|
||||||
|
];
|
||||||
|
|
||||||
|
var venusLayers = [
|
||||||
|
{ layers: ["basalt", "limestone"], height: 0.5 },
|
||||||
|
{ layers: ["sand", "ash", "clay"], height: 0.25 },
|
||||||
|
{ layers: ["tuff"], height: 0.15 },
|
||||||
|
{ layers: ["sulfur", ["basalt", "sand"]], height: 0.1 }
|
||||||
|
];
|
||||||
|
|
||||||
|
var earthLayers = [
|
||||||
|
{ layers: ["rock", "basalt", "tuff", "limestone"], height: 0.55 },
|
||||||
|
{ layers: ["clay", "mudstone", "clay_soil"], height: 0.3 },
|
||||||
|
{ layers: [["sand", "wet_sand", "clay"], ["grass", "gravel", "dirt"]], height: 0.15 }
|
||||||
|
];
|
||||||
|
|
||||||
|
var marsLayers = [
|
||||||
|
{ layers: ["iron", "nickel"], height: 0.3 },
|
||||||
|
{ layers: ["iron", "nickel", "rust"], height: 0.15 },
|
||||||
|
{ layers: ["iron", "nickel", "rust", "rust"], height: 0.15 },
|
||||||
|
{ layers: ["rust"], height: 0.4 }
|
||||||
|
];
|
||||||
|
|
||||||
|
function tryCreateStaticPixel(pixelType, x, y) {
|
||||||
|
var staticPixelType = "static_" + pixelType;
|
||||||
|
|
||||||
|
// Check if the static version of the pixel type exists
|
||||||
|
if (!elements[staticPixelType]) {
|
||||||
|
// Create the static version of the pixel type
|
||||||
|
elements[staticPixelType] = Object.assign({}, elements[pixelType], {
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
tick: undefined
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the static pixel
|
||||||
|
tryCreatePixel(staticPixelType, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRandomWeightedElement(weightedList) {
|
||||||
|
// Parse the input string into an array of objects with name and weight properties
|
||||||
|
const elements = weightedList.split(',').map(item => {
|
||||||
|
const [name, weight] = item.split('%');
|
||||||
|
return { name: name.trim(), weight: parseFloat(weight) };
|
||||||
|
});
|
||||||
|
|
||||||
|
// Calculate the total weight
|
||||||
|
const totalWeight = elements.reduce((total, element) => total + element.weight, 0);
|
||||||
|
|
||||||
|
// Generate a random number between 0 and totalWeight
|
||||||
|
const randomWeight = Math.random() * totalWeight;
|
||||||
|
|
||||||
|
// Find the element corresponding to the random weight
|
||||||
|
let cumulativeWeight = 0;
|
||||||
|
for (const element of elements) {
|
||||||
|
cumulativeWeight += element.weight;
|
||||||
|
if (randomWeight < cumulativeWeight) {
|
||||||
|
return element.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to load a script dynamically
|
||||||
|
function loadScript(url) {
|
||||||
|
var script = document.createElement("script");
|
||||||
|
script.type = "text/javascript";
|
||||||
|
script.src = url;
|
||||||
|
document.head.appendChild(script);
|
||||||
|
}
|
||||||
|
|
||||||
|
function circleSimplexNoise1D(simplex, theta) {
|
||||||
|
return simplex.noise2D(Math.cos(theta * Math.PI / 180), Math.sin(theta * Math.PI / 180));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load the simplex-noise library
|
||||||
|
loadScript("https://cdnjs.cloudflare.com/ajax/libs/simplex-noise/2.4.0/simplex-noise.min.js");
|
||||||
|
|
||||||
|
function getRandomElement(layer) {
|
||||||
|
if (!layer || layer.length === 0) {
|
||||||
|
return null; // Return null or handle the error case
|
||||||
|
}
|
||||||
|
return layer[Math.floor(Math.random() * layer.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
function generatePlanet(config, x, y, radius) {
|
||||||
|
var simplex = new SimplexNoise();
|
||||||
|
|
||||||
|
var centerX = x;
|
||||||
|
var centerY = y;
|
||||||
|
var planetRadius = radius;
|
||||||
|
var cloudStartRadius = planetRadius + 7;
|
||||||
|
var cloudEndRadius = planetRadius + 14;
|
||||||
|
|
||||||
|
// Generate terrain
|
||||||
|
for (var r = 0; r <= planetRadius; r++) {
|
||||||
|
var step = 0.5;
|
||||||
|
if (r <= 50) { step = 1; }
|
||||||
|
if (r <= 20) { step = 2; }
|
||||||
|
for (var theta = 0; theta <= 360; theta += step) {
|
||||||
|
var x = Math.round(centerX + r * Math.cos(theta * Math.PI / 180));
|
||||||
|
var y = Math.round(centerY + r * Math.sin(theta * Math.PI / 180));
|
||||||
|
|
||||||
|
if (x >= 0 && x < width && y >= 0 && y < height) {
|
||||||
|
var distance = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2));
|
||||||
|
var noise = (-Math.abs(circleSimplexNoise1D(simplex, theta * 0.7)) * 0.5) + (-Math.abs(circleSimplexNoise1D(simplex, theta * 2.5)) * 0.3);
|
||||||
|
var noisyDistance = distance - (noise * planetRadius * 0.3);
|
||||||
|
|
||||||
|
if (noisyDistance <= planetRadius) {
|
||||||
|
// Determine the layer based on distance from center
|
||||||
|
var totalHeight = 0;
|
||||||
|
for (var i = 0; i < config.biomes.length; i++) {
|
||||||
|
totalHeight += config.biomes[i].height;
|
||||||
|
}
|
||||||
|
|
||||||
|
var cumulativeHeight = 0;
|
||||||
|
var chosenLayer = null;
|
||||||
|
|
||||||
|
for (var i = 0; i < config.biomes.length; i++) {
|
||||||
|
var biome = config.biomes[i];
|
||||||
|
var layerHeight = (biome.height / totalHeight) * planetRadius;
|
||||||
|
|
||||||
|
if (noisyDistance >= cumulativeHeight && noisyDistance < cumulativeHeight + layerHeight) {
|
||||||
|
chosenLayer = biome.layers;
|
||||||
|
|
||||||
|
// If chosenLayer is a list of lists, pick a sublayer based on noise
|
||||||
|
if (Array.isArray(chosenLayer) && Array.isArray(chosenLayer[0])) {
|
||||||
|
var sublayerNoise = (circleSimplexNoise1D(simplex, theta) + 1) / 2;
|
||||||
|
var sublayerIndex = Math.floor(sublayerNoise * chosenLayer.length);
|
||||||
|
if (sublayerIndex < 0) {
|
||||||
|
sublayerIndex = 0;
|
||||||
|
} else if (sublayerIndex >= chosenLayer.length) {
|
||||||
|
sublayerIndex = chosenLayer.length - 1;
|
||||||
|
}
|
||||||
|
chosenLayer = chosenLayer[sublayerIndex];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cumulativeHeight += layerHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
var element = getRandomElement(chosenLayer);
|
||||||
|
if (element) {
|
||||||
|
tryCreateStaticPixel(element, x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.oceanElements) {
|
||||||
|
for (var i = centerX - planetRadius; i <= centerX + planetRadius; i++) {
|
||||||
|
for (var j = centerY - planetRadius; j <= centerY + planetRadius; j++) {
|
||||||
|
if (i >= 0 && i < width && j >= 0 && j < height) {
|
||||||
|
var distanceFromCenter = Math.sqrt(Math.pow(i - centerX, 2) + Math.pow(j - centerY, 2));
|
||||||
|
if (distanceFromCenter > planetRadius - 40 && distanceFromCenter <= planetRadius - 4) {
|
||||||
|
// Place ocean in the ring around the planet
|
||||||
|
tryCreateStaticPixel(getRandomWeightedElement(config.oceanElements), i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.cloudElements) {
|
||||||
|
for (var r = cloudStartRadius; r <= cloudEndRadius; r++) {
|
||||||
|
var step = 1;
|
||||||
|
for (var theta = 0; theta <= 360; theta += step) {
|
||||||
|
var x = Math.round(centerX + r * Math.cos(theta * Math.PI / 180));
|
||||||
|
var y = Math.round(centerY + r * Math.sin(theta * Math.PI / 180));
|
||||||
|
|
||||||
|
if (x >= 0 && x < width && y >= 0 && y < height) {
|
||||||
|
var distance = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2));
|
||||||
|
var cloudNoise = simplex.noise2D(x * 0.05, y * 0.05) + simplex.noise2D(x * 0.17, y * 0.17);
|
||||||
|
|
||||||
|
// Adjust cloud density based on distance from planet
|
||||||
|
var minCloudThreshold = 0.5 + config.cloudDensityBias; // Minimum threshold closer to the planet
|
||||||
|
var maxCloudThreshold = 0.8 + config.cloudDensityBias; // Maximum threshold further from the planet
|
||||||
|
|
||||||
|
// Interpolate threshold based on distance from planet
|
||||||
|
var t = (r - cloudStartRadius) / (cloudEndRadius - cloudStartRadius);
|
||||||
|
var threshold = minCloudThreshold + t * (maxCloudThreshold - minCloudThreshold);
|
||||||
|
|
||||||
|
if (cloudNoise > threshold) {
|
||||||
|
tryCreateStaticPixel(getRandomWeightedElement(config.cloudElements), x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var mercuryConfig = {
|
||||||
|
biomes: mercuryLayers,
|
||||||
|
cloudElements: "",
|
||||||
|
cloudDensityBias: 0.0
|
||||||
|
};
|
||||||
|
|
||||||
|
var venusConfig = {
|
||||||
|
biomes: venusLayers,
|
||||||
|
cloudElements: "ammonia%70,acid_cloud%30",
|
||||||
|
cloudDensityBias: 0.2
|
||||||
|
};
|
||||||
|
|
||||||
|
var earthConfig = {
|
||||||
|
biomes: earthLayers,
|
||||||
|
oceanElements: "salt_water%80,water%20",
|
||||||
|
cloudElements: "cloud%100",
|
||||||
|
cloudDensityBias: 0.0
|
||||||
|
};
|
||||||
|
|
||||||
|
var marsConfig = {
|
||||||
|
biomes: marsLayers,
|
||||||
|
cloudElements: "",
|
||||||
|
cloudDensityBias: 0.0
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
elements.planetMercury = {
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
category: "special",
|
||||||
|
maxSize: 1,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.start === pixelTicks) {
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
generatePlanet(mercuryConfig, pixel.x, pixel.y, 13);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.planetVenus = {
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
category: "special",
|
||||||
|
maxSize: 1,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.start === pixelTicks) {
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
generatePlanet(venusConfig, pixel.x, pixel.y, 30);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.planetEarth = {
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
category: "special",
|
||||||
|
maxSize: 1,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.start === pixelTicks) {
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
generatePlanet(earthConfig, pixel.x, pixel.y, 33);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.planetMars = {
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
category: "special",
|
||||||
|
maxSize: 1,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.start === pixelTicks) {
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
generatePlanet(marsConfig, pixel.x, pixel.y, 20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -1,8 +1,25 @@
|
||||||
//texture_pack_by_jayd
|
//texture_pack_by_jayd
|
||||||
document.body.style.backgroundImage = 'url("https://jayd-rubies.github.io/1236951076024877107.png")';
|
document.body.style.backgroundImage = 'url("https://jayd-rubies.github.io/1236951076024877107.png")';
|
||||||
gameDiv.style.border = "0px solid #ffffff";
|
gameDiv.style.border = "1px solid #ffffff00";
|
||||||
|
window.addEventListener("load",function(){
|
||||||
|
document.querySelectorAll(".categoryButton").forEach(e => {
|
||||||
|
e.style.backgroundColor = "transparent";
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var offsetCorrection = 0;
|
||||||
|
if (pixelSize === 8){
|
||||||
|
offsetCorrection = 4;
|
||||||
|
}
|
||||||
|
else if (pixelSize === 6){
|
||||||
|
offsetCorrection = 3;
|
||||||
|
}
|
||||||
|
else if (pixelSize === 4){
|
||||||
|
offsetCorrection = 2;
|
||||||
|
}
|
||||||
|
|
||||||
function drawCursor() {
|
function drawCursor() {
|
||||||
canvas.style.backgroundColor = "#00000000";
|
canvas.style.backgroundColor = "transparent";
|
||||||
var layerCtx = canvasLayers.gui.getContext('2d');
|
var layerCtx = canvasLayers.gui.getContext('2d');
|
||||||
var mouseOffset = Math.trunc(mouseSize/2);
|
var mouseOffset = Math.trunc(mouseSize/2);
|
||||||
var topLeft = [mousePos.x-mouseOffset,mousePos.y-mouseOffset];
|
var topLeft = [mousePos.x-mouseOffset,mousePos.y-mouseOffset];
|
||||||
|
|
@ -10,6 +27,10 @@ function drawCursor() {
|
||||||
// Draw a square around the mouse
|
// Draw a square around the mouse
|
||||||
layerCtx.strokeStyle = "#FFFFFF80";
|
layerCtx.strokeStyle = "#FFFFFF80";
|
||||||
layerCtx.strokeRect(topLeft[0]*pixelSize,topLeft[1]*pixelSize,(bottomRight[0]-topLeft[0]+1)*pixelSize,(bottomRight[1]-topLeft[1]+1)*pixelSize);
|
layerCtx.strokeRect(topLeft[0]*pixelSize,topLeft[1]*pixelSize,(bottomRight[0]-topLeft[0]+1)*pixelSize,(bottomRight[1]-topLeft[1]+1)*pixelSize);
|
||||||
|
layerCtx.beginPath();
|
||||||
|
layerCtx.arc(mousePos.x*pixelSize+offsetCorrection, mousePos.y*pixelSize+offsetCorrection, mouseSize*pixelSize/2, 0, 2 * Math.PI, false);
|
||||||
|
layerCtx.lineWidth = 1;
|
||||||
|
layerCtx.stroke();
|
||||||
// draw one transparent pixel in the center
|
// draw one transparent pixel in the center
|
||||||
if (settings.precision) {
|
if (settings.precision) {
|
||||||
layerCtx.fillStyle = "#ffffffc8";
|
layerCtx.fillStyle = "#ffffffc8";
|
||||||
|
|
@ -19,11 +40,77 @@ function drawCursor() {
|
||||||
if (shaping === 1) { // Draw a white line from shapeStart.x to shapeStart.y
|
if (shaping === 1) { // Draw a white line from shapeStart.x to shapeStart.y
|
||||||
layerCtx.beginPath();
|
layerCtx.beginPath();
|
||||||
layerCtx.strokeStyle = "#FFFFFF80";
|
layerCtx.strokeStyle = "#FFFFFF80";
|
||||||
layerCtx.lineWidth = 2;
|
layerCtx.lineWidth = 1;
|
||||||
layerCtx.moveTo(shapeStart.x*pixelSize+pixelSizeHalf, shapeStart.y*pixelSize+pixelSizeHalf);
|
layerCtx.moveTo(shapeStart.x*pixelSize+pixelSizeHalf, shapeStart.y*pixelSize+pixelSizeHalf);
|
||||||
layerCtx.lineTo(mousePos.x*pixelSize+pixelSizeHalf, mousePos.y*pixelSize+pixelSizeHalf);
|
layerCtx.lineTo(mousePos.x*pixelSize+pixelSizeHalf, mousePos.y*pixelSize+pixelSizeHalf);
|
||||||
layerCtx.stroke();
|
|
||||||
layerCtx.lineWidth = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function pixelColorPick(pixel,customColor=null) {
|
||||||
|
var element = pixel.element;
|
||||||
|
var elementInfo = elements[element];
|
||||||
|
//if (elementInfo.behavior instanceof Array) {
|
||||||
|
|
||||||
|
if (pixel.charge && elementInfo.colorOn) {
|
||||||
|
customColor = elementInfo.colorOn;
|
||||||
|
}
|
||||||
|
if (customColor != null) {
|
||||||
|
if (Array.isArray(customColor)) {
|
||||||
|
customColor = customColor[Math.floor(Math.random() * customColor.length)];
|
||||||
|
}
|
||||||
|
if (customColor.startsWith("#")) {
|
||||||
|
customColor = hexToRGB(customColor);
|
||||||
|
}
|
||||||
|
var rgb = customColor;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var rgb = elements[element].colorObject; // {r, g, b}
|
||||||
|
// If rgb is an array, choose a random item
|
||||||
|
if (Array.isArray(rgb)) {
|
||||||
|
rgb = rgb[Math.floor(Math.random() * rgb.length)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Randomly darken or lighten the RGB color
|
||||||
|
var coloroffset = Math.floor(Math.random() * (Math.random() > 0.5 ? -1 : 1) * Math.random() * 5);
|
||||||
|
var r = rgb.r + coloroffset;
|
||||||
|
var g = rgb.g + coloroffset;
|
||||||
|
var b = rgb.b + coloroffset;
|
||||||
|
// Make sure the color is within the RGB range
|
||||||
|
r = Math.max(0, Math.min(255, r));
|
||||||
|
g = Math.max(0, Math.min(255, g));
|
||||||
|
b = Math.max(0, Math.min(255, b));
|
||||||
|
var color = "rgb("+r+","+g+","+b+")";
|
||||||
|
|
||||||
|
/*}
|
||||||
|
else {
|
||||||
|
var color = elementInfo.color;
|
||||||
|
if (Array.isArray(color)) {
|
||||||
|
color = color[Math.floor(Math.random() * color.length)];
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderBall(ctx, color, x1, y1,plus_radius,opacity=1) {
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.globalAlpha = opacity;
|
||||||
|
ctx.arc(x1*pixelSize+offsetCorrection, y1*pixelSize+offsetCorrection, pixelSize-offsetCorrection+plus_radius, 0, 2 * Math.PI, false);
|
||||||
|
ctx.fillStyle = color;
|
||||||
|
ctx.fill();
|
||||||
|
}
|
||||||
|
function renderGas(ctx, color, x1, y1,radius,opacity=1) {
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.globalAlpha = opacity;
|
||||||
|
ctx.arc(x1*pixelSize+offsetCorrection, y1*pixelSize+offsetCorrection, pixelSize*radius, 0, 2 * Math.PI, false);
|
||||||
|
ctx.fillStyle = color;
|
||||||
|
ctx.fill();
|
||||||
|
}
|
||||||
|
viewInfo[4] = { // Small Pixels
|
||||||
|
name: "Ball",
|
||||||
|
pixel: function(pixel,ctx) {
|
||||||
|
if ((elements[pixel.element].isGas && elements[pixel.element].glow !== false) || elements[pixel.element].glow || pixel.glow) {
|
||||||
|
renderGas(ctx,pixel.color,pixel.x,pixel.y,3,0.5);
|
||||||
|
}
|
||||||
|
else{renderBall(ctx,pixel.color,pixel.x,pixel.y,0,1);}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue