Merge branch 'R74nCom:main' into main

This commit is contained in:
JustAGenericUsername 2024-05-11 16:49:41 -04:00 committed by GitHub
commit 7204ea8b64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 2961 additions and 242 deletions

View File

@ -153,7 +153,7 @@
"ammonia":"amoníaco",
"liquid_ammonia":"liquido_de_amoníaco",
"carbon_dioxide":"dióxido_de_carbono",
"oil":"aceite ",
"oil":"aceite",
"lamp_oil":"aceite_de_lampara",
"propane":"propano",
"methane":"metano",
@ -198,7 +198,7 @@
"slow_cloner":"clonador_lento",
"clone_powder":"polvo_de_clone",
"floating_cloner":"clonador_flotante",
"virus":"virus ",
"virus":"virus",
"ice_nine":"hielo_nueve",
"strange_matter":"asunto_extraño",
"permafrost":"permafrost",
@ -241,7 +241,7 @@
"bronze":"bronce",
"sterling":"libra_esterliina",
"gallium":"galio",
"molten_gallium":"galion_fundido",
"molten_gallium":"galio_fundido",
"gallium_gas":"gas_galio",
"rose_gold":"oro_rosa",
"purple_gold":"oro_purpura",
@ -277,7 +277,7 @@
"rotten_cheese":"queso_podrido",
"chocolate":"chocolate",
"grape":"uva",
"vinegar":"vinagre ",
"vinegar":"vinagre",
"herb":"hierba",
"lettuce":"lechuga",
"pickle":"pepinillo",
@ -406,121 +406,121 @@
"neutron":"neutrón",
"proton":"protón ",
"electric":"electrico",
"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":"",
"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":"reydeporvida",
"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":"",
"uranium":"uranio",
"molten_uranium":"uranio_fundido",
"diamond":"diamante",
"gold_coin":"moneda_de_oro",
"rust":"óxido",
"oxidized_copper":"cobre_oxidado",
"alga":"aluminio_galio",
"metal_scrap":"chatarra",
"glass_shard":"fragmento_de_vidrio",
"rad_shard":"fragmento_de_vidrio_rad",
"brick_rubble":"escombros_de_ladrillo",
"baked_clay":"arcilla_horneado",
"clay_shard":"fragmento_de_arcilla",
"porcelain_shard":"fragmento_de_porcelina",
"feather":"pluma",
"confetti":"confetti",
"glitter":"brillo",
"bead":"cuenta",
"color_sand":"arena_de_color",
"borax":"bórax",
"epsom_salt":"sal_de_epsom",
"potassium_salt":"sal_de_potassio",
"sodium_acetate":"acetato_sodio",
"lightning":"relampago",
"bless":"bendecir",
"god_ray":"rayo_de_dios",
"heat_ray":"rayo_de_calor",
"explosion":"explosión",
"n_explosion":"explosión_n",
"supernova":"supernova",
"pop":"estallido",
"cook":"cocinar",
"incinerate":"incinerar",
"room_temp":"temp_ambiente",
"positron":"positrón",
"tnt":"tnt",
"c4":"c4",
"grenade":"grenada",
"dynamite":"dinamita",
"gunpowder":"polvóra",
"ember":"ascua",
"firework":"fuego_artificiale",
"fw_ember":"ascua_fa",
"nuke":"bomba_nuclear",
"h_bomb":"bomba_h",
"dirty_bomb":"bomba_sucio",
"emp_bomb":"bomba_de_iem",
"nitro":"nitróglicerina",
"greek_fire":"fuego_griego",
"fireball":"bola_de_fuego",
"rocket":"cohete",
"cold_bomb":"bomba_de_frio",
"hot_bomb":"bomba_de_calor",
"antimatter_bomb":"bomba_antimaterio",
"party_popper":"aguafiestas",
"flashbang":"bomba_de_destello",
"flash":"destello",
"smoke_grenade":"granada_de_humo",
"landmine":"mina",
"armageddon":"armagedón",
"tesla_coil":"bobina_de_tesla",
"light_bulb":"foco",
"shocker":"choquedor",
"pressure_plate":"placa_de_presión",
"primordial_soup":"sopa_primordial",
"molten_slag":"escoria_fundido",
"molten_dirt":"tierra_fundido",
"debug":"depurar",
"prop":"prop",
"salt_ice":"hielo_de_sal",
"sugar_ice":"hielo_de_azúcar",
"seltzer_ice":"hielo_carbonado",
"dirty_ice":"hielo_sucio",
"pool_ice":"hielo_clorado",
"blood_ice":"sangre_congelado",
"antibody_ice":"anticuerpo_congelado",
"infection_ice":"infección_congelado",
"unknown":"desconocido",
"slime_ice":"limo_congelado",
"antiice":"antihielo",
"ammonia_ice":"hielo_de_ammonia",
"liquid_propane":"propano_líquido",
"methane_ice":"hielo_methano",
"molten_brick":"ladrillo_fundido",
"acid_ice":"acido_congelado",
"soda_ice":"soda_congelado",
"molten_steel":"acero_fundido",
"molten_brass":"latón_fundido",
"molten_bronze":"bronce_fundido",
"molten_sterling":"esterlina_fundido",
"molten_rose_gold":"oro_rosa_fundido",
"molten_purple_gold":"oro_purpula_fundido",
"molten_blue_gold":"oro_azúl_fundido",
"molten_electrum":"electro_fundido",
"molten_pyrite":"pirita_fundido",
"broth_ice":"caldo_congelado",
"frozen_vinegar":"vinagre_congelado",
"sauce_ice":"salsa_congelado",
"alcohol_ice":"alcohol_congelado",
"bleach_ice":"lejía_congelado",
"chlorine_ice":"cloro_congelado",
"frozen_ink":"tinta_congelado",
"tea_ice":"té_congelado",
"coffee_ice":"café_congelado",
"hydrogen_ice":"hidrógeno_congelado",
"oxygen_ice":"oxígeno_congelado",
"molten_amalgam":"amalgama_fundido",
"neon_ice":"neón_congelado",
"cyanide_ice":"ciaruno_congelado",
"molten_copper_sulfate":"cobre_sulfató_fundido",
"molten_alga":"aluminio_galio_fundido",
"molten_metal_scrap":"chatarra_fundido",
"molten_borax":"bórax_fundido",
"molten_epsom_salt":"sal_de_epsom_fundido",
"molten_potassium_salt":"sal_de_potassio_fundido",
"molten_sodium_acetate":"",
"frozen_nitro":"",
"cured_meat": "",
@ -540,4 +540,4 @@
"blaster": "",
"propane_ice": "",
"molten_caustic_potash": ""
}
}

View File

@ -136,6 +136,7 @@
<tr><td>evenmoretemptools.js</td><td>Adds different temperature-modifying tools (±350/tick, NaN, and Infinity)</td><td>Alice</td></tr>
<tr><td>extra_element_info.js</td><td>Adds descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanilla</td><td>Melecie</td></tr>
<tr><td>find.js</td><td>Adds a find mode that highlights a chosen element as pulsating red and yellow <a href="https://github.com/R74nCom/sandboxels/commit/de0dc088ab4d928c77587b9d0e3a7d7663e3f94a">(read commit description)</a></td><td>Alice</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>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>
@ -157,7 +158,7 @@
<!----><tr><td class="modCat" colspan="3">Science & Chemistry</td></tr><!---->
<tr><td>alcohol.js</td><td>Adds methanol, (iso-)propanol, and butanol</td><td>Alice</td></tr>
<tr><td>alkahest.js</td><td>Adds the alkahest, a liquid which dissolves anything</td><td>Alice</td></tr>
<tr><td>aScientistsWish.js</td><td>Adds things that related to science, especially radiation</td><td>Carbon Monoxide, CPU</td></tr>
<tr><td>aScientistsWish.js</td><td>Adds things that related to science, especially radiation</td><td>Carbon Monoxide, salmonfishy</td></tr>
<tr><td>bettermetalscrap.js</td><td>Allows metal scrap to be melted back into its original material</td><td>nousernamefound</td></tr>
<tr><td>bigger_star_spawners.js</td><td>Adds spawners for larger stars</td><td>Alice</td></tr>
<tr><td>bioooze_and_pyrogens.js</td><td>Adds Bio-Ooze from <a herf="https://frackinuniverse.miraheze.org/wiki/Main_Page">Frackin Universe</a> and several heat-producing materials from various games mods</td><td>Alice</td></tr>
@ -221,23 +222,23 @@
<tr><td>more_breaking.js</td><td>Allows for breaking more elements in explosions</td><td>Alice</td></tr>
<tr><td>rays.js</td><td>Adds more Ray types</td><td>Alice</td></tr>
<tr><td>rays++.js</td><td>Adds a couple more rays</td><td>uptzik</td></tr>
<tr><td>weapons.js</td><td>Adds some extra weapons</td><td>Jayd</td></tr>
<tr><td>weapons.js</td><td>Adds varieties of different weapons </td><td>Jayd</td></tr>
<!----><tr><td class="modCat" colspan="3">Food & Cooking</td></tr><!---->
<tr><td>aChefsDream.js</td><td>Adds more foods, animals, tools and many other cooking related items. Updates can be found in <a href="https://www.youtube.com/watch?v=pQFTtlNPODQ&list=PLWHqGb75vC8o7CLv-pMoVb56JL9BY9F0t">this YouTube Playlist</a></td><td>SquareScreamYT</td></tr>
<tr><td>aChefsDream_beta.js</td><td>Beta testing for aChefsDream. The code can be found <a href="https://www.github.com/SquareScreamYT/aChefsDream.js">on GitHub</a></td><td>SquareScreamYT</td></tr>
<tr><td>bananas.js</td><td>Adds bananas and banana plants</td><td>Alice</td></tr>
<tr><td>CherrySoda.js</td><td>Adds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda.</td><td>guzzo86</td></tr>
<tr><td>community_desserts.js</td><td>Adds various desserts from community suggestions</td><td>Tisquares</td></tr>
<tr><td>greenitemsandmore.js</td><td>Adds various green things, including apples and more food</td><td>zonneschijn7</td>
<tr><td>ketchup_mod.js</td><td>Adds a bunch of ketchup related stuff, plus a few other condiments</td><td>Nubo318 (main dev), Devi, Alice (contributors)</td></tr>
<tr><td>lemonade.js</td><td>Adds lemons and lemonade</td><td>personman / baconthemyth</td></tr>
<tr><td>morefoodsmod.js</td><td>Adds more foods</td><td>Clide4</td></tr>
<tr><td>pizzasstuff.js</td><td>New animals, foods, and plants</td><td>_ilikepizza_</td></tr>
<tr><td>potato_chips.js</td><td>Potato chips.</td><td>guzzo86</td></tr>
<tr><td>sbstuff.js</td><td>Adds many foods</td><td>stefanblox</td></tr>
<tr><td>soups.js</td><td>Adds seasoning and soup</td><td>pixelegend4</td></tr>
<tr><td>weAllScreamFor.js</td><td>Adds ice cream toppings</td><td>rottenEgghead</td></tr>
<tr><td>CherrySoda.js</td><td>Adds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda.</td><td>guzzo86</td></tr>
<tr><td>GrapeSoda.js</td><td>Adds materials to make Grape soda. Methylanthranilate + seltzer = Grapesoda.</td><td>guzzo86</td></tr>
<!----><tr><td class="modCat" colspan="3">Life & Nature</td></tr><!---->
<tr><td>advanced_colonies.js</td><td>Adds davlers, creatures with complex colonies</td><td>DaviStudios</td></tr>

View File

@ -65,7 +65,7 @@ elements.cherrysoda_gas = {
temp: 169,
}
elements.cherrysoda_ice = {
color: "BF4F9C",
color: "#BF4F9C",
behavior: behaviors.wALL,
category: "solids",
state: "solid",

View File

@ -45,7 +45,6 @@ elements.anthranilicacid = {
tempLow: -98,
burn: 100,
burnTime: 100,
burnInto: "carbondioxide"
}
elements.methanolice = {
@ -68,6 +67,8 @@ elements.anthranilicacid = {
stateLow: "methanol",
tempLow: 64,
temp: 84,
burn: 100,
burnTime: 100,
}
elements.methylanthranilate = {
color: "#FFFBBA",

233
mods/Lab.js Normal file
View File

@ -0,0 +1,233 @@
elements.lab = {
color: "#ff0000",
behaviorOn: behaviors.WALL,
behavior: [
"CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wire|CR:wire|CR:wire|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall",
"CR:wall|DL|XX|XX|XX|XX|XX|CR:e_cr|CR:wall|CR:sensor|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|CR:wall|CR:wall|CR:wall|XX|CR:wall|CR:wall|CR:wall|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|CR:wall|CR:wall|CR:wire|xx|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:ecloner|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|CR:wall|CR:wall|CR:wire|CR:wall|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|CR:sensor|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|CR:wall|XX|CR:wall|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:player|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|XX|CR:wall|CR:wall|CR:wall|XX|CR:wall|CR:wall|CR:wall|CR:wall|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|CR:wire|CR:wall|CR:wire|CR:wall|CR:wire|CR:wall|CR:wire|CR:wall|XX|XX|XX|CR:wall|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wall|XX|XX|XX|CR:wall|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|CR:wall|CR:wall|CR:wall|CR:wire|CR:wall|CR:wall|CR:wall|CR:wire|CR:sensor|XX|XX|CR:wall|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|CR:wall|CR:wall|CR:wall|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall",
],
category: "lab",
state: "solid",
};
elements.e_cr = {
name: "e-cr",
color: "#dddd00",
behavior: behaviors.WALL,
behaviorOn: [
"XX|XX|XX",
"XX|XX|XX",
"XX|CR:human|XX"
],
tick: function(pixel) {
if (pixel.create) { return }
for (var i = 0; i < adjacentCoords.length; i++) {
var coords = adjacentCoords[i];
var x = pixel.x + coords[0];
var y = pixel.y + coords[1];
if (!isEmpty(x,y,true)) {
pixel.temp = pixelMap[x][y].temp;
if (pixelMap[x][y].create) { pixel.create = pixelMap[x][y].create; break }
var element = pixelMap[x][y].element;
if (element === pixel.element || elements[pixel.element].ignore.indexOf(element) !== -1) { continue }
pixel.create = element;
break;
}
}
},
ignore: ["cloner","slow_cloner","clone_powder","floating_cloner","wire","ewall","wire","sensor","battery"],
category:"machines",
insulate:true,
darkText: true,
conduct: 1,
hardness: 1,
movable: false
}
var libraryMod = "mods/code_library.js";
if(enabledMods.includes(libraryMod)) {
sussyKey = null;
isShift = false;
isAlt = false;
document.addEventListener("keydown", function(modifierDownListener) {
// User presses shift
if (modifierDownListener.keyCode == 16) {
isShift = true;
}
// User presses alt
if (modifierDownListener.keyCode == 18) {
isAlt = true;
}
});
document.addEventListener("keyup", function(modifierUpListener) {
// User releases shift
if (modifierUpListener.keyCode == 16) {
isShift = false;
}
// User releases alt
if (modifierUpListener.keyCode == 18) {
isAlt = false;
}
});
document.addEventListener("keyup", function(sussyListener) {
switch (sussyListener.keyCode) {
case 87:
sussyKey = "W";
break;
case 65:
sussyKey = "A";
break;
case 83:
sussyKey = "S";
break;
case 68:
sussyKey = "D";
break;
case 81:
sussyKey = "Q";
break;
case 88:
sussyKey = "X";
break;
case 90:
sussyKey = "Z";
break;
case 72:
sussyKey = "H";
break;
};
});
function controllablePixelTryCreatePixelNullCheck(element,x,y) {
if(!elements[element]) { //catch the null
return false;
};
if(isEmpty(x,y)) {
tryCreatePixel(element,x,y);
return true;
} else {
return false;
}
}
elements.player = {
color: "#FFFFFF",
colorOn: "#FFFF00",
behavior: behaviors.WALL,
state: "solid",
density: 2000,
maxSize: 1,
conduct: 1,
hardness: 1,
tick: function(pixel) {
var xx = pixel.x;
var yy = pixel.y;
userElement = currentElement;
if(userElement === pixel.element) {
userElement = null;
};
if(isShift && !isAlt) {
sussyKey === "Z" ? pixel.color = "rgb(255,191,127)" : pixel.color = "rgb(255,127,127)";
}
if(isAlt && !isShift) {
sussyKey === "Z" ? pixel.color = "rgb(191,255,127)" : pixel.color = "rgb(127,255,127)";
}
if(isAlt && isShift) {
sussyKey === "Z" ? pixel.color = "rgb(255,255,0)" : pixel.color = "rgb(255,255,127)";
}
if(!isAlt && !isShift) {
sussyKey === "Z" ? pixel.color = "rgb(255,255,191)" : pixel.color = "rgb(255,255,255)";
}
if(sussyKey !== null) {
switch (sussyKey) {
case "W":
isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy-1) : tryMove(pixel,xx,yy-1);
if(!isShift) {
sussyKey = null;
}
break;
case "A":
isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx-1,yy) : tryMove(pixel,xx-1,yy);
if(!isShift) {
sussyKey = null;
}
break;
case "S":
isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy+1) : tryMove(pixel,xx,yy+1);
if(!isShift) {
sussyKey = null;
}
break;
case "D":
tryMove(pixel,xx+1,yy);
if(!isShift) {
sussyKey = null;
}
break;
case "H": //Alt+D is something else in some browsers.
if(isAlt) {
controllablePixelTryCreatePixelNullCheck(userElement,xx+1,yy);
};
if(!isShift) {
sussyKey = null;
}
break;
case "X":
explodeAt(xx,yy,5)
if(!isShift) {
sussyKey = null;
}
break;
case "Z":
if (!pixel.charge && !pixel.chargeCD && !isEmpty(pixel.x,pixel.y,true)) {
pixel.charge = 1;
}
if(!isShift === 0) {
sussyKey = null;
}
break;
case "Q": //Use if a key gets stuck
sussyKey = null;
isShift = null;
isAlt = null;
break;
}
}
},
}
} else {
alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`)
enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod)
localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
};
// i know it looks messy but it works
// if u dont belive me test it but place it in the center of the canvas

207
mods/Natural_disasters.js Normal file
View File

@ -0,0 +1,207 @@
//mod made by imilkflamingos
function countNeighbors(pixel,target){
var targeted = 0;
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)) {
var otherPixel = pixelMap[x][y];
if (otherPixel.element == target){
targeted = targeted + 1
}
}
}
return targeted;
}
//made by Fioushemastor
function getDistance(x1, y1, x2, y2) {
return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
}
function getNearestPixel( posX,posY, targetElement) {
let nearestPixel
let minDistance = Infinity
//the stuff
for (let index in pixelMap) {
for (let pixel of pixelMap[index]) {
if (pixel == undefined) continue;
if (pixel.element == targetElement) {
let distance = getDistance(pixel.x, pixel.y, posX, posY);
if (distance < minDistance) {
minDistance = distance;
nearestPixel = pixel;
}
}
}
}
return nearestPixel
}
// Rest made me
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function createEarthQuakeRand() {
const chance = Math.random();
if ( chance <= 0.005 ) {
var randY = getRandomInt(60,85)
var randX = getRandomInt(1,163)
if(isEmpty(randX,randY)) {
createPixel('earthquake',randX,randY)
}
else {
changePixel(pixelMap[randX][randY],'earthquake')
}
}
}
function createTsunamiRand(){
var randX = getRandomInt(1,163)
const ClosestPixel = getNearestPixel(randX,25,'water')
if(ClosestPixel) {
var neighbors = countNeighbors(ClosestPixel,'water')
if (isEmpty(ClosestPixel.x,ClosestPixel.y-1)) {
const chance = Math.random();
if ( chance <= 0.001 && countNeighbors(ClosestPixel,'water') >= 3) {
createPixel('tsunami',ClosestPixel.x,ClosestPixel.y-1)
}
}
}
}
function createWildFireRand(){
var randX = getRandomInt(1,163)
const ClosestPixel = getNearestPixel(randX,25,'plant')
if(ClosestPixel) {
if (!isEmpty(ClosestPixel.x,ClosestPixel.y)) {
const chance = Math.random();
if ( chance <= 0.0005) {
ClosestPixel.burning = true;
}
}
}
}
function createMetorShower(){
}
function createCloud(pixel, type) {
for (let i = 0; i < 70; i++) {
if(isEmpty(pixel.x-i,pixel.y) ) {
createPixel(type,pixel.x-i,pixel.y, );
}
if(isEmpty(pixel.x+i,pixel.y) ) {
createPixel(type,pixel.x+i,pixel.y, );
}
if(isEmpty(pixel.x-i,pixel.y-1) ) {
createPixel(type,pixel.x-i,pixel.y-1, );
}
if(isEmpty(pixel.x+i,pixel.y-1) ) {
createPixel(type,pixel.x+i,pixel.y-1, );
}
if(isEmpty(pixel.x-i,pixel.y+1) ) {
createPixel(type,pixel.x-i,pixel.y+1, );
}
if(isEmpty(pixel.x+i,pixel.y+1) ) {
createPixel(type,pixel.x+i,pixel.y+1, );
}
i+1
}
}
elements.Test_Element = {
hidden: true,
color: "#ff0000",
conduct: 0.1,
category:"test",
behavior: behaviors.WALL,
onSelect: function(pixel){},
tick: function(pixel) {
},
};
elements.Diaster_Spawner = {
maxSize : 1,
color: ["#8D8D8C", "#666666"],
category: "land",
behavior: behaviors.WALL,
properties : {
age: 0,
},
tick : function(pixel) {
const num = getRandomInt(1,3)
if (num == 1) {
createCloud(pixel, 'rain_cloud')
} else if(num == 2){
createCloud(pixel, 'thunder_cloud')
} else {
createCloud(pixel, 'tornado_cloud')
}
if(pixel.age > 100) {
changePixel(pixel,"cloud");
}
pixel.age++
doDefaults(pixel);
},
};
elements.tornado_cloud = {
color: ["#8D8D8C", "#666666"],
category: "land",
state : 'gas',
behavior: [
"XX|XX|XX",
"XX|DL%0.0001|M1%2.5 AND BO",
"XX|XX|XX",
],
tick : function(pixel) {
const chance = Math.random();
if ( chance <= 0.00001) {
if(isEmpty(pixel.x,pixel.y+1)) {
changePixel(pixel,"tornado")
}
}
},
density: 0.4,
ignoreAir: true,
conduct: 0.03
};
function createCloudRand() {
const chance = Math.random();
var randY = getRandomInt(7,19)
if(chance <= 0.001) {
if( isEmpty(83,randY)){
createPixel('Diaster_Spawner',83,randY)
}
}
}
function runEvents(){
if(!paused) {
createEarthQuakeRand();
createTsunamiRand();
createCloudRand();
createWildFireRand();
}
}
runAfterLoad(function() {
RunSimInterval = window.setInterval(runEvents, 75);
});

View File

@ -59,7 +59,7 @@ elements.mangrove_mud = {
density: 1089,
stain: 0.25
};
peat_slurry = {
elements.peat_slurry = {
color: "#556B2F",
behavior: elements.slime.behavior,
viscosity: 10000,
@ -92,7 +92,7 @@ elements.fen_mud = {
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1550,
density: 1450,
stain: 0.28
};
elements.swamp_sludge = {
@ -479,7 +479,7 @@ elements.mud = {
density: 1000,
stain: 0.3
};
elements.quicksand = {
elements.quicksand_mud = {
color: "#DAA520",
behavior: elements.slime.behavior,
viscosity: 1750,
@ -505,7 +505,7 @@ elements.sandy_mud = {
};
elements.sticky_quicksand = {
color: "#DAA520",
behavior:elements.sap.behavior,
behavior: elements.sap.behavior,
viscosity: 1700,
tempHigh: 65,
stateHigh: "liquid",
@ -515,3 +515,592 @@ elements.sticky_quicksand = {
density: 1100,
stain: 0.25
};
elements.fluff_mud = {
color: "#964B00",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 40,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1300,
stain: 0.2
};
elements.bog = {
color: "#556B2F",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 45,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1400,
stain: 0.25
};
elements.mire = {
color: "#2E8B57",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 50,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1500,
stain: 0.3
};
elements.oobleck = {
color: "#008000",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 25,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1600,
stain: 0.15
};
elements.spiderwebs = {
color: "#D3D3D3",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 20,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1700,
stain: 0.1
};
elements.silt_quicksand = {
color: "#DAA520",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 68,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1500,
stain: 0.15
};
elements.syrupy_mud = {
color: "#8B4513",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 65,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1550,
stain: 0.2
};
elements.quagmire_mud = {
color: "#A0522D",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 60,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1600,
stain: 0.25
};
elements.bog_quicksand = {
color: "#556B2F",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 62,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1650,
stain: 0.2
};
elements.sludge_mud = {
color: "#2E8B57",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 58,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1700,
stain: 0.3
};
elements.squishy_slime = {
color: "#FF4500",
behavior: elements.slime.behavior,
viscosity: 15000,
tempHigh: 20,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1600,
stain: 0.1
};
elements.sparkling_slime = {
color: "#FFD700",
behavior: elements.slime.behavior,
viscosity: 12000,
tempHigh: 25,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1650,
stain: 0.15
};
elements.glittery_slime = {
color: "#B0E0E6",
behavior: elements.slime.behavior,
viscosity: 25000,
tempHigh: 10,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1750,
stain: 0.25
};
elements.swirling_slime = {
color: "#9370DB",
behavior: elements.slime.behavior,
viscosity: 18000,
tempHigh: 5,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1800,
stain: 0.3
};
elements.fizzling_slime = {
color: "#00FFFF",
behavior: elements.slime.behavior,
viscosity: 15000,
tempHigh: -5,
stateHigh: "liquid",
tempLow: -10,
category: "liquids",
state: "liquid",
density: 1900,
stain: 0.25
};
elements.crackling_slime = {
color: "#FF6347",
behavior: elements.slime.behavior,
viscosity: 20000,
tempHigh: -10,
stateHigh: "liquid",
tempLow: -15,
category: "liquids",
state: "liquid",
density: 1480,
stain: 0.3
};
elements.glowing_slime = {
color: "#7B68EE",
behavior: elements.slime.behavior,
viscosity: 25000,
tempHigh: -15,
stateHigh: "liquid",
tempLow: -20,
category: "liquids",
state: "liquid",
density: 1395,
stain: 0.2
};
elements.crunchy_slime = {
color: "#00BFFF",
behavior: elements.slime.behavior,
viscosity: 30000,
tempHigh: -20,
stateHigh: "liquid",
tempLow: -25,
category: "liquids",
state: "liquid",
density: 2050,
stain: 0.25
};
elements.sizzling_slime = {
color: "#FFA07A",
behavior: elements.slime.behavior,
viscosity: 35000,
tempHigh: -25,
stateHigh: "liquid",
tempLow: -30,
category: "liquids",
state: "liquid",
density: 1463,
stain: 0.3
};
elements.spider_webbing = {
color: "#FFFFFF",
behavior: elements.slime.behavior,
viscosity: 5000,
tempHigh: 25,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1100,
stain: 0.05
};
elements.webbing_gel = {
color: "#FFD700",
behavior: elements.slime.behavior,
viscosity: 7000,
tempHigh: 30,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1200,
stain: 0.08
};
elements.arachnid_slime = {
color: "#00FF00",
behavior: elements.slime.behavior,
viscosity: 8000,
tempHigh: 35,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1250,
stain: 0.1
};
elements.sticky_silk = {
color: "#FFFACD",
behavior: elements.slime.behavior,
viscosity: 6000,
tempHigh: 40,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1300,
stain: 0.12
};
elements.webbing_solution = {
color: "#FFA07A",
behavior: elements.slime.behavior,
viscosity: 9000,
tempHigh: 45,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1350,
stain: 0.15
};
elements.arachnid_resin = {
color: "#FF00FF",
behavior: elements.slime.behavior,
viscosity: 7500,
tempHigh: 50,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1400,
stain: 0.18
};
elements.spider_snot = {
color: "#7FFFD4",
behavior: elements.slime.behavior,
viscosity: 8500,
tempHigh: 55,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1450,
stain: 0.2
};
elements.arachnid_ooze = {
color: "#6495ED",
behavior: elements.slime.behavior,
viscosity: 9500,
tempHigh: 60,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1325,
stain: 0.22
};
elements.sticky_spider_goo = {
color: "#8A2BE2",
behavior: elements.slime.behavior,
viscosity: 8500,
tempHigh: 65,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1350,
stain: 0.25
};
elements.arachnid_sludge = {
color: "#FF4500",
behavior: elements.slime.behavior,
viscosity: 8000,
tempHigh: 70,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1142,
stain: 0.28
};
elements.spider_secretion = {
color: "#FFFF00",
behavior: elements.slime.behavior,
viscosity: 9000,
tempHigh: 75,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1464,
stain: 0.3
};
elements.arachnid_essence = {
color: "#800080",
behavior: elements.slime.behavior,
viscosity: 8500,
tempHigh: 80,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1325,
stain: 0.25
};
elements.sticky_spider_residue = {
color: "#8B4513",
behavior: elements.slime.behavior,
viscosity: 9500,
tempHigh: 85,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1499,
stain: 0.28
};
elements.arachnid_phlegm = {
color: "#32CD32",
behavior: elements.slime.behavior,
viscosity: 9000,
tempHigh: 90,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1345,
stain: 0.3
};
elements.sticky_spider_slime = {
color: "#800000",
behavior: elements.slime.behavior,
viscosity: 9000,
tempHigh: 105,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1431,
stain: 0.3
};
elements.arachnid_mucus = {
color: "#FF1493",
behavior: elements.slime.behavior,
viscosity: 9500,
tempHigh: 110,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 2000,
stain: 0.25
};
elements.spider_secretion = {
color: "#32CD32",
behavior: elements.slime.behavior,
viscosity: 9000,
tempHigh: 115,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 2050,
stain: 0.28
};
elements.arachnid_excretion = {
color: "#FF4500",
behavior: elements.slime.behavior,
viscosity: 8500,
tempHigh: 120,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 2100,
stain: 0.3
};
elements.sticky_spider_ooze = {
color: "#00008B",
behavior: elements.slime.behavior,
viscosity: 9000,
tempHigh: 125,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 2150,
stain: 0.25
};
elements.arachnid_liquid = {
color: "#FFFF00",
behavior: elements.slime.behavior,
viscosity: 9500,
tempHigh: 130,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 2200,
stain: 0.28
};
elements.swamp_slime = {
color: "#32CD32",
behavior: elements.slime.behavior,
viscosity: 9000,
tempHigh: 30,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1450,
stain: 0.2
};
elements.muddy_swamp_water = {
color: "#8B4513",
behavior: elements.slime.behavior,
viscosity: 9500,
tempHigh: 35,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1500,
stain: 0.25
};
elements.swamp_sludge = {
color: "#556B2F",
behavior: elements.slime.behavior,
viscosity: 10000,
tempHigh: 40,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1550,
stain: 0.3
};
elements.boggy_mud = {
color: "#6B8E23",
behavior: elements.slime.behavior,
viscosity: 10500,
tempHigh: 45,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1600,
stain: 0.2
};
elements.swamp_ooze = {
color: "#32CD32",
behavior: elements.slime.behavior,
viscosity: 11000,
tempHigh: 50,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1650,
stain: 0.25
};
elements.sludgy_swamp_mixture = {
color: "#556B2F",
behavior: elements.slime.behavior,
viscosity: 11500,
tempHigh: 55,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1700,
stain: 0.3
};
elements.marshy_slime = {
color: "#8B4513",
behavior: elements.slime.behavior,
viscosity: 12000,
tempHigh: 60,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1750,
stain: 0.2
};
elements.soggy_bog = {
color: "#6B8E23",
behavior: elements.slime.behavior,
viscosity: 12500,
tempHigh: 65,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1800,
stain: 0.25
};
elements.mossy_swamp_water = {
color: "#32CD32",
behavior: elements.slime.behavior,
viscosity: 13000,
tempHigh: 70,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1850,
stain: 0.3
};
elements.murky_marsh_mixture = {
color: "#556B2F",
behavior: elements.slime.behavior,
viscosity: 13500,
tempHigh: 75,
stateHigh: "liquid",
tempLow: 0,
category: "liquids",
state: "liquid",
density: 1900,
stain: 0.2
};

View File

@ -18,7 +18,37 @@ function getRGB(rgb){
let rgb2 = rgb.replace(")", "").replace("rgb(", "").replace(/,/g, "r").split("r")
return { r: parseInt(rgb2[0]), g: parseInt(rgb2[1]), b: parseInt(rgb2[2]) };
}
function findMostFrequent(arr) {
let freqMap = {};
if (arr) {
if (arr.length === 0) {
return "water";
} else if (arr.length === 1) {
return arr[0]
} else {
arr.forEach(item => {
if(!freqMap[item]) {
freqMap[item] = 0;
}
freqMap[item]++;
});
let max = 0;
let mostFrequent = [];
for (let item in freqMap) {
if (freqMap[item] > max) {
max = freqMap[item];
mostFrequent = [item];
} else if (freqMap[item] === max) {
mostFrequent.push(item);
}
}
return mostFrequent.join(', ');
}
}
}
behaviors.STURDYPOWDER2 = [
"XX|XX|XX",
"XX|XX|XX",
@ -39,25 +69,21 @@ elements.knife = {
//changePixel(pixel, cutInto)
if (shiftDown) {
if (Math.random() < 0.5) {
changePixel(pixel, cutInto)
var cutIntoEmit = elements[pixel.element].cutIntoEmit;
if (!cutIntoEmit) { return };
if(cutIntoEmit instanceof Array) { cutIntoEmit = cutIntoEmit[Math.floor(Math.random() * cutIntoEmit.length)] };
var thiselement = pixel.element;
if (elements[thiselement].cutIntoEmit && Math.random() < 0.7 && isEmpty(pixel.x,pixel.y-1)) {
createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
changePixel(pixel, cutInto)
pixelTempCheck(pixel);
if (elements[thiselement].cutIntoColor) {
pixel.color = pixelColorPick(pixel, elements[thiselement].cutIntoColor);
}
}
}
else if (!shiftDown) {
if (Math.random() < 0.1) {
changePixel(pixel, cutInto)
var cutIntoEmit = elements[pixel.element].cutIntoEmit;
if (!cutIntoEmit) { return };
if(cutIntoEmit instanceof Array) { cutIntoEmit = cutIntoEmit[Math.floor(Math.random() * cutIntoEmit.length)] };
var thiselement = pixel.element;
if (elements[thiselement].cutIntoEmit && Math.random() < 0.4 && isEmpty(pixel.x,pixel.y-1)) {
createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
changePixel(pixel, cutInto)
pixelTempCheck(pixel);
if (elements[thiselement].cutIntoColor) {
pixel.color = pixelColorPick(pixel, elements[thiselement].cutIntoColor);
}
}
}
@ -422,6 +448,10 @@ elements.soup = {
if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); }
else {
ingredient.color = pixelColorPick(ingredient, hex);
if (!ingredient.elemlist){
ingredient.elemlist = [];
}
ingredient.elemlist.push(soup.elemlist[Math.floor(Math.random() * soup.elemlist.length)])
}
}
}
@ -439,6 +469,13 @@ elements.soup = {
}
}
},
hoverStat: function(soup, ingredient) {
if (findMostFrequent(soup.elemlist) == undefined) {
return "Ingredients:None"
} else {
return "Ingredients:"+findMostFrequent(soup.elemlist)
}
},
}
if (!elements.broth.reactions) elements.broth.reactions = {};
@ -6586,6 +6623,7 @@ elements.durian = {
cutInto: "cut_durian",
state: "solid",
density: 1050,
breakInto: "durian_juice"
}
elements.cut_durian = {
@ -6601,6 +6639,7 @@ elements.cut_durian = {
hidden: true,
freezeDryInto: "freeze_dried_fruits",
freezeDryIntoColor: "#a19f3b",
breakInto: "durian_juice"
}
elements.durian_seed = {
@ -6649,6 +6688,32 @@ elements.durian_seed = {
"XX|M1|XX",
],
};
elements.durian_juice = {
color: "#ebe06e",
onMix: function(pixel) {
if (shiftDown) {
if (Math.random() < 0.2) {
changePixel(pixel,"juice")
pixel.color = pixelColorPick(pixel,"#ebe06e")
}
}
},
behavior: behaviors.LIQUID,
category: "liquids",
tempHigh: 100,
stateHigh: ["steam","sugar"],
burn: 70,
burnTime: 300,
burnInto: ["steam", "smoke"],
state: "liquid",
density: 825,
hidden: true,
temp: 30,
hidden: true,
tempLow: 0,
};
eLists.JUICEMIXABLE.push("durian_juice");
elements.egg_white = {
color: "#edece8",
behavior: behaviors.LIQUID,
@ -7613,6 +7678,7 @@ elements.unripe_rambutan = {
cutInto: "cut_rambutan",
state: "solid",
density: 1050,
breakInto: "rambutan_juice"
}
elements.rambutan = {
@ -7626,7 +7692,7 @@ elements.rambutan = {
state: "solid",
density: 1050,
cutInto: "cut_rambutan",
hidden: true,
breakInto: "rambutan_juice"
}
elements.cut_rambutan = {
@ -7642,6 +7708,7 @@ elements.cut_rambutan = {
hidden: true,
freezeDryInto: "freeze_dried_fruits",
freezeDryIntoColor: "#a19f3b",
breakInto: "rambutan_juice"
}
elements.rambutan_seed = {
@ -7691,6 +7758,32 @@ elements.rambutan_seed = {
],
};
elements.rambutan_juice = {
color: "#f7f4cb",
onMix: function(pixel) {
if (shiftDown) {
if (Math.random() < 0.2) {
changePixel(pixel,"juice")
pixel.color = pixelColorPick(pixel,"#f7f4cb")
}
}
},
behavior: behaviors.LIQUID,
category: "liquids",
tempHigh: 100,
stateHigh: ["steam","sugar"],
burn: 70,
burnTime: 300,
burnInto: ["steam", "smoke"],
state: "liquid",
density: 825,
hidden: true,
temp: 30,
hidden: true,
tempLow: 0,
};
eLists.JUICEMIXABLE.push("rambutan_juice");
elements.barbecued_shrimp = {
color:["#bf743b", "#b57026","#8f5e29","#a87b11"],
behavior: behaviors.STURDYPOWDER,
@ -7829,6 +7922,26 @@ elements.raisin = {
isFood: true
}
elements.fruit_slush = {
color: "#ed93a4",
behavior: behaviors.LIQUID,
reactions: {
"dirt": { elem1: null, elem2: "mud" },
"sand": { elem1: null, elem2: "wet_sand" },
"uranium": { elem1:"dirty_water", chance:0.25 },
},
temp: -5,
tempHigh: 18,
tempLow: -20,
stateLow: "juice_ice",
stateHigh: "juice",
category: "food",
state: "liquid",
density: 95,
viscosity: 100,
hidden: true
}
// things to mix: juice, water, seltzer, sugar water, soda, juice, milk, cream,
// juice, milk, chocolate milk, fruit milk, eggnog, nut milk, alcohol, wine, tea,
// tea, coffee, honey, caramel, vanilla essence, peppermint tea, sugar, yogurt,
@ -7836,9 +7949,9 @@ elements.raisin = {
// juice mixing
for (let juicei = 0; juicei < eLists.JUICEMIXABLE.length; juicei++) {
elem = eLists.JUICEMIXABLE[juicei];
// juice with juice
for (let juicej = 0; juicej < eLists.JUICEMIXABLE.length; juicej++) {
elem = eLists.JUICEMIXABLE[juicei];
elem2 = eLists.JUICEMIXABLE[juicej];
if (elem != elem2) {
if (!elements[elem].reactions) { chance:1, elements[elem].reactions = {} }
@ -7909,6 +8022,19 @@ for (let juicei = 0; juicei < eLists.JUICEMIXABLE.length; juicei++) {
pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
}}
}
iceelem = elem+"_ice"
// ice slush
elements[elem].stateLowColorMultiplier = 1.2;
elements[elem].tempLow = 10;
elements.fruit_slush.stateHighColorMultiplier = 0.83333333333;
elements.fruit_slush.stateLowColorMultiplier = 1.2;
elements.juice_ice.stateHighColorMultiplier = 0.83333333333;
elements.juice_ice.stateHigh = "fruit_slush"
elements.juice_ice.tempHigh = -20
elements[iceelem].stateHigh = "fruit_slush"
elements[iceelem].tempHigh = -20
// fruit milk with milk
elements.fruit_milk.reactions.milk = { chance:1, func: function(pixel1, pixel2){
let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2);
@ -7982,3 +8108,25 @@ elements.fruit_milk.reactions.fruit_milk = { chance:1, func: function(pixel1, pi
pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
}
}
// fruit milk onMix
elements.fruit_milk.onMix = function(pixel){
let num = Math.floor(Math.random() * 4);
let x = pixel.x + adjacentCoords[num][0];
let y = pixel.y + adjacentCoords[num][1];
if(!isEmpty(x,y) && !outOfBounds(x,y)){
let pixel2 = pixelMap[x][y];
if(pixel.color != pixel2.color && pixel2.element == "fruit_milk"){
let condition;
if(shiftDown == 0){
condition = (Math.floor(Math.random() * 2) == 1);
} else {
condition = true;
}
if(condition){
let newrgb = interpolateRgb(getRGB(pixel.color), getRGB(pixel2.color), 0.5);
pixel.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
}
}
}
}

58
mods/cash_n_more.js Normal file
View File

@ -0,0 +1,58 @@
elements.cash = {
color: "#00e600",
behavior: behaviors.POWDER,
category: "powders",
};
delete elements.paper;
delete elements.sponge;
elements.sponge = {
color: "#ffff1a",
behavior: behaviors.SOLID,
category: "solids",
tool: function(pixel) {
if (pixel.element == "water") {
pixel.element = "wet_sponge"
}
},
};
elements.wet_sponge = {
color: "#cccc00",
behavior: behaviors.SOLID,
category: "solids",
};
elements.paper = {
color: "#ffffff",
behavior: behaviors.SOLID,
category: "solids",
};
elements.shredded_paper = {
color: "#ffffff",
behavior: behaviors.POWDER,
category: "powders",
};
elements.shredded_cash = {
color: "#004d00",
behavior: behaviors.POWDER,
category: "powders",
};
elements.shredder = {
color: "#08b508",
behavior: behaviors.SOLID,
tool: function(pixel) {
if (pixel.element == "cash") {
pixel.element = "shredded_cash"
},
if (pixel.element == "paper") {
pixel.element = "shredded_money"
}
},
category: "tools",
};

38
mods/colorLED.js Normal file
View File

@ -0,0 +1,38 @@
elements.led = {
behavior: behaviors.WALL,
reactions: {
"light": {"charge1":1},
"liquid_light": {"charge1":1},
},
color: "#666666",
colorOn: "#ffffff",
category: "machines",
tempHigh: 1500,
stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"],
conduct: 1,
breakInto: "glass_shard",
tick: (pixel) => {
if (pixel.start == pixelTicks) {
pixel.normalColor = pixel.color;
pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 120).join(", ")})`;
}
if (pixel.color != pixel.normalColor && !pixel.charge && !pixel.chargeCD) {
pixel.normalColor = pixel.color;
pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 120).join(", ")})`;
}
if (pixel.charge) {
pixel.color = pixel.chargeColor;
} else {
pixel.color = pixel.normalColor;
}
}
}
pixelColorPick = (function() {
const oldPixelColorPick = pixelColorPick;
return function(pixel, customColor = null) {
if (pixel.element == "led" && pixel.color && !customColor) return pixel.color;
return oldPixelColorPick.apply(this, arguments);
}
})()

View File

@ -0,0 +1,44 @@
elements.colored_light_bulb = {
color: "#666666",
colorOn: "#ffffff",
behavior: behaviors.WALL,
category: "machines",
tempHigh: 1500,
stateHigh: ["molten_glass","molten_glass","molten_copper"],
conduct: 1,
breakInto: "glass_shard",
tick: function(pixel) {
if (pixel.start == pixelTicks) {
pixel.normalColor = pixel.color;
pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 150).join(", ")})`;
}
if (pixel.color != pixel.normalColor && !pixel.charge && !pixel.chargeCD) {
pixel.normalColor = pixel.color;
pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 150).join(", ")})`;
}
if (pixel.charge) {
pixel.color = pixel.chargeColor;
} else {
pixel.color = pixel.normalColor;
}
if (pixel.charge > 0) {
for (let i = 0; i < adjacentCoords.length; i++){
let coord = adjacentCoords[i]
let x = coord[0]+pixel.x
let y = coord[1]+pixel.y
if (isEmpty(x, y)){
//do crap to the pixel
createPixel("light", x, y,),
pixelMap[x][y].color = pixel.chargeColor
}
}
}}
}
pixelColorPick = (function() {
const oldPixelColorPick = pixelColorPick;
return function(pixel, customColor = null) {
if (pixel.element == "colored_light_bulb" && pixel.color && !customColor) return pixel.color;
return oldPixelColorPick.apply(this, arguments);
}
})()

View File

@ -5,37 +5,50 @@
*
* Got questions? Contact tisqbisque on Discord!
*
* This version: 1.1
* This version: 2.0
*/
// Other mods can add to this list [:
eListAdd("FRUITS",["apple","banana","blackberry","blueberry","grape","kiwi","mango","orange","peach","plum","pomegranate","rambutan","strawberry"]);
function fruitLength() {
return eLists.FRUITS.length;
}
// Dulce de leche items
elements.dulce_de_leche = {
alias: "manjar",
color: ["#c56600","#f7a204","#ca6400","#893604"],
color: ["#c56600", "#f7a204", "#ca6400", "#893604"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
reactions: {
"cream_cheese": { elem1:"dulce_de_leche", elem2:null, color1:["#DFAB73","#fbcc75","#e2aa73","#be9075"], oneway:true }, // for recipe accuracy :3
"cream_cheese": { elem1: "dulce_de_leche", elem2: null, color1: ["#DFAB73", "#fbcc75", "#e2aa73", "#be9075"], oneway: true }, // for recipe accuracy :3
},
tempLow: -20,
stateLow: "candy",
tempHigh: 250,
stateHigh: ["fragrance","smoke","smoke"],
stateHigh: ["fragrance", "smoke", "smoke"],
viscosity: 500,
stain: 0.02,
density: 1284.93,
hidden: true,
isFood: true,
desc: "Added in the first version of the mod.\nMade by heating Sweetened Condensed Milk at 175°C+.\nFrom undexconocidox_26419.\n"
desc: "Added in version 1.0 of Community Desserts.\nMade by heating Sweetened Condensed Milk at 175°C+.\nFrom undexconocidox_26419.\n"
}
elements.sweetened_condensed_milk = {
color: ["#ffe9ba","#fbd396","#fde2a9"],
alias: "sweet_milk",
color: ["#ffe9ba", "#fbd396", "#fde2a9"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
onMix: function(cmilk, jamcheck) {
if(shiftDown && elements[jamcheck.element].id === elements.jam.id && Math.random() < 0.06) {
changePixel(cmilk,"mousse");
pixelMap[cmilk.x][cmilk.y].color = shiftColor(rgbToHex(jamcheck.color),"#272727","add");
deletePixel(jamcheck.x,jamcheck.y);
}
},
tempLow: 0,
stateLow: ["ice_cream","sugar"],
stateLow: ["ice_cream", "sugar"],
tempHigh: 175,
stateHigh: "dulce_de_leche",
viscosity: 5,
@ -43,29 +56,29 @@ elements.sweetened_condensed_milk = {
density: 1050.83,
hidden: true,
isFood: true,
desc: "Added in the first version of the mod.\nMade by mixing Milk and Sugar at 85°C+.\n",
desc: "Added in version 1.0 of Community Desserts.\nMade by mixing Milk and Sugar at 85°C+.\n",
}
// Chocotorta items
elements.cream_cheese = {
color: ["#ebe9ea","#e4dfdd","#eeeeee"],
color: ["#ebe9ea", "#e4dfdd", "#eeeeee"],
category: "Community",
state: "solid",
behavior: behaviors.STURDYPOWDER,
//reactions: {
// For future use
// For future use
//},
tempHigh: 65,
stateHigh: "melted_cheese",
stateHighColor: ["#fbffff","#f6f6f6"],
stateHighColor: ["#fbffff", "#f6f6f6"],
hardness: 0.01,
density: 980.61,
hidden: true,
isFood: true,
desc: "Added in the first version of the mod.\nMade by mixing Acid with Milk or Cream.\n",
desc: "Added in version 1.0 of Community Desserts.\nMade by mixing Acid with Milk or Cream at 90°C-.\n",
}
elements.cocoa_bean = {
color: ["#e16f51","#e28e67","#e18550","#84574d"],
color: ["#e16f51", "#e28e67", "#e18550", "#84574d"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
@ -78,17 +91,17 @@ elements.cocoa_bean = {
stateLow: "frozen_plant",
// not hidden by default
// not food don't eat it
desc: "Added in the first version of the mod.\n",
desc: "Added in version 1.0 of Community Desserts.\n",
}
elements.cocoa_powder = {
color: ["#855344","#6d4c41","#40271d"],
color: ["#855344", "#6d4c41", "#40271d"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
onMix: function(powder, doughcheck) {
onMix: function (powder, doughcheck) {
if (elements[doughcheck.element].id == elements.dough.id && shiftDown && Math.random() < 0.25) {
deletePixel(powder.x,powder.y);
changePixel(doughcheck,"chocolate_biscuit_dough");
deletePixel(powder.x, powder.y);
changePixel(doughcheck, "chocolate_biscuit_dough");
}
},
density: 363.5,
@ -96,7 +109,7 @@ elements.cocoa_powder = {
stateHigh: "smoke",
hidden: true,
isFood: true,
desc: "Added in the first version of the mod.\nMade by Smashing Cocoa Bean.\n",
desc: "Added in version 1.0 of Community Desserts.\nMade by Smashing Cocoa Bean.\n",
}
elements.chocolate_biscuit_dough = {
color: "#623727",
@ -111,7 +124,7 @@ elements.chocolate_biscuit_dough = {
density: 526.9,
isFood: true,
hidden: true,
desc: "Added in the first version of the mod.\nMade by hard mixing Cocoa Powder with Dough.\n",
desc: "Added in version 1.0 of Community Desserts.\nMade by hard mixing Cocoa Powder with Dough.\n",
}
elements.chocolate_biscuit = {
color: "#864B36",
@ -119,34 +132,34 @@ elements.chocolate_biscuit = {
state: "solid",
behavior: behaviors.STURDYPOWDER,
breakInto: "crumb",
breakIntoColor: ["#af8264","#b28461","#aa7852","#a8744b"],
breakIntoColor: ["#af8264", "#b28461", "#aa7852", "#a8744b"],
tempHigh: 232.2,
stateHigh: ["smoke","smoke","smoke","ash"],
stateHigh: ["smoke", "smoke", "smoke", "ash"],
density: 233.96,
isFood: true,
hidden: true,
desc: "Added in the first version of the mod.\nMade by cooking Choco Biscuit Dough at 94°C+.\nCan be layered with other items to make chocotorta, from undexconocidox_26419.\n",
desc: "Added in version 1.0 of Community Desserts.\nMade by cooking Choco Biscuit Dough at 94°C+.\nCan be layered with other items to make chocotorta, from undexconocidox_26419.\n",
}
// Haupia items
elements.coconut = {
color: ["#793b1e","#995c31","#5f3015"],
color: ["#793b1e", "#995c31", "#5f3015"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
breakInto: ["coconut_milk","tinder"],
breakInto: ["coconut_milk", "tinder"],
tempHigh: 225,
stateHigh: ["steam","ash","smoke"],
stateHigh: ["steam", "ash", "smoke"],
density: 822,
desc: "Added in the first version of the mod.\n",
desc: "Added in version 1.0 of Community Desserts.\n",
}
elements.coconut_milk = {
color: ["#f3f3f3","#e4ddcb","#f8f8f8"],
color: ["#f3f3f3", "#e4ddcb", "#f8f8f8"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
reactions: {
"sugar": { elem1:null, elem2:"haupia_mix", tempMin:90 },
"sugar": { elem1: null, elem2: "haupia_mix", tempMin: 90 },
},
tempHigh: 102,
stateHigh: "steam",
@ -156,10 +169,10 @@ elements.coconut_milk = {
density: 1031.33,
hidden: true,
isFood: true,
desc: "Added in the first version of the mod.\nMade by smashing Coconut.\n",
desc: "Added in version 1.0 of Community Desserts.\nMade by smashing Coconut.\n",
}
elements.haupia_mix = {
color: ["#f3f3f3","#e4ddcb","#f8f8f8"],
color: ["#f3f3f3", "#e4ddcb", "#f8f8f8"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
@ -170,55 +183,647 @@ elements.haupia_mix = {
viscosity: 2.3,
density: 1242.67,
hidden: true,
desc: "Added in the first version of the mod.\nMade by mixing Coconut Milk and Sugar at 90°C+.\n",
desc: "Added in version 1.0 of Community Desserts.\nMade by mixing Coconut Milk and Sugar at 90°C+.\n",
}
elements.haupia = {
color: ["#ffffff","#f8f8f8","#f7f9f8"],
color: ["#ffffff", "#f8f8f8", "#f7f9f8"],
category: "Community",
state: "solid",
behavior: behaviors.SUPPORT,
tempHigh: 105,
stateHigh: ["steam","fragrance"],
stateHigh: ["steam", "fragrance"],
density: 1300,
hidden: true,
isFood: true,
desc: "Added in the first version of the mod.\nMade by cooling Haupia Mix at 3°C-.\nFrom tisqbisque.\n"
desc: "Added in version 1.0 of Community Desserts.\nMade by cooling Haupia Mix at 3°C-.\nFrom tisqbisque.\n"
}
// Pie crust items
elements.pie_crust_batter = {
alias: "pie_batter",
color: ["#efdbae", "#ffe6ab", "#eacb88"],
category: "Community",
state: "solid",
behavior: behaviors.STURDYPOWDER,
tempHigh: 180,
stateHigh: "pie_crust",
density: 233.96,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by mixing Dough and Butter.\n",
}
elements.pie_crust = {
color: ["#c18d45", "#b07f3c", "#d0a352", "#b27f3a"],
category: "Community",
state: "solid",
behavior: behaviors.STURDYPOWDER,
breakInto: "crumb",
breakIntoColor: ["#af8264", "#b28461", "#aa7852", "#a8744b"],
tempHigh: 232.2,
stateHigh: ["smoke", "smoke", "smoke", "ash"],
density: 233.96,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by cooking Pie Crust Batter at 180°C+.\n",
}
// Jam and fruit items
elements.jam = {
color: ["#e14a4a","#f64040","#e72225"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
tick: function (pixel) {
var madeJelly = false;
// Check left, right, up, down from jam pixel..
if(pixel.temp >= 95) {
if(Math.random() < 0.05 && pixel.x-1 !== 0) {
if (!isEmpty(pixel.x-1,pixel.y) && pixelMap[pixel.x-1][pixel.y].element === "water") {
changePixel(pixelMap[pixel.x-1][pixel.y],"jelly");
pixelMap[pixel.x-1][pixel.y].color = shiftColor(rgbToHex(pixel.color),"#272727","sub");
madeJelly = true;
};
};
if(Math.random() < 0.05 && pixel.x+1 !== width) {
if (!isEmpty(pixel.x+1,pixel.y) && pixelMap[pixel.x+1][pixel.y].element === "water") {
changePixel(pixelMap[pixel.x+1][pixel.y],"jelly");
pixelMap[pixel.x+1][pixel.y].color = shiftColor(rgbToHex(pixel.color),"#272727","sub");
madeJelly = true;
};
};
if(Math.random() < 0.05 && pixel.y-1 !== 0) {
if (!isEmpty(pixel.x,pixel.y-1) && pixelMap[pixel.x][pixel.y-1].element === "water") {
changePixel(pixelMap[pixel.x][pixel.y-1],"jelly");
pixelMap[pixel.x][pixel.y-1].color = shiftColor(rgbToHex(pixel.color),"#272727","sub");
madeJelly = true;
};
};
if(Math.random() < 0.05 && pixel.y+1 !== height) {
if (!isEmpty(pixel.x,pixel.y+1) && pixelMap[pixel.x][pixel.y+1].element === "water") {
changePixel(pixelMap[pixel.x][pixel.y+1],"jelly");
pixelMap[pixel.x][pixel.y+1].color = shiftColor(rgbToHex(pixel.color),"#272727","sub");
madeJelly = true;
};
};
if(madeJelly) {
deletePixel(pixel.x,pixel.y);
}
}
},
tempHigh: 160,
stateHigh: ["smoke", "smoke", "sugar"],
tempLow: -5,
stateLowName: "frozen_jam",
stateLowColorMultiplier: 1.1,
viscosity: 200000,
stain: 0.3,
density: 1333.5,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by smashing a fruit.\n",
}
elements.frozen_jam = {
stateHighColorMultiplier: 0.91,
}
elements.fruit_seed = { // similar to pinecone
color: ["#5c3333","#472727","#311b1b"],
tick: function(pixel) {
if (!tryMove(pixel,pixel.x,pixel.y+1) && pixelTicks-pixel.start > 50) {
if (pixel.h === undefined) { // set to even number between 8 and 26
pixel.h = Math.floor(Math.random()*9)*2+8;
pixel.lh = pixel.h;
}
if (Math.random() < 0.02 && pixel.h > 0 && pixel.temp < 100) {
if (!outOfBounds(pixel.x,pixel.y+1)) { // grow roots
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
if (dirtPixel && (eLists.SOIL.indexOf(dirtPixel.element) !== -1 || dirtPixel.element === "grass")) {
changePixel(dirtPixel,"root");
}
}
if (isEmpty(pixel.x,pixel.y-1) && tryMove(pixel,pixel.x,pixel.y-1)) {
createPixel("wood",pixel.x,pixel.y+1);
pixel.h --;
}
}
else if (pixel.h === 0) {
changePixel(pixel,"fruit_tree");
pixelMap[pixel.x][pixel.y].h = pixel.lh;
}
}
doDefaults(pixel);
},
tempHigh: 500,
stateHigh: "wood",
burn: 5,
burnTime: 100,
category: "Community",
state: "solid",
density: 1500,
cooldown: defaultCooldown,
seed: true,
desc: "Added in version 2.0 of Community Desserts.\nGrows into Fruit Tree.\n"
}
elements.fruit_tree = { // like sapling
color: ["#007a00","#0a910a","#036903"],
tick: function (pixel) {
if (pixel.h > 0 && pixelTicks % (50+pixel.h) === 0) {
// extend to the left and right, giving the next h-1
// The taller the tree, the longer the umbrella
if (isEmpty(pixel.x-1,pixel.y)) {
createPixel("fruit_tree",pixel.x-1,pixel.y);
pixelMap[pixel.x-1][pixel.y].h = pixel.h-2;
}
if (isEmpty(pixel.x+1,pixel.y)) {
createPixel("fruit_tree",pixel.x+1,pixel.y);
pixelMap[pixel.x+1][pixel.y].h = pixel.h-2;
}
if (isEmpty(pixel.x,pixel.y-1)) {
createPixel("fruit_tree",pixel.x,pixel.y-1);
}
}
else if(isEmpty(pixel.x,pixel.y+1) && Math.random() < 0.0005 ) {
createPixel(eLists.FRUITS[Math.floor(Math.random()*fruitLength())],pixel.x,pixel.y+1);
}
doDefaults(pixel);
},
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: "Community",
tempHigh: 100,
stateHigh: "dead_plant",
burn:45,
burnTime:75,
burnInto: ["dead_plant","dead_plant","dead_plant","dead_plant","fruit_seed"],
breakInto: ["dead_plant","dead_plant","dead_plant","dirt","sap"],
state: "solid",
density: 1050,
seed: "fruit_seed",
hidden: true,
movable: false,
desc: "Added in version 2.0 of Community Desserts.\nMay drop a random fruit. Current # of fruits: " + (fruitLength()-1) +".\n",
}
elements.apple = {
color: ["#c6de70","#efdc5c","#c75833","#bd3838"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#f5cb40" },
"concrete": { elem1:"juice", chance:0.1, color1:"#f5cb40" },
"basalt": { elem1:"juice", chance:0.1, color1:"#f5cb40" },
"limestone": { elem1:"juice", chance:0.1, color1:"#f5cb40" },
"tuff": { elem1:"juice", chance:0.1, color1:"#f5cb40" },
"acid": { elem1:"juice", color1:"#f5cb40" },
"acid_gas": { elem1:"juice", color1:"#f5cb40" },
},
breakInto: "jam",
breakIntoColor: ["#ddae16","#fdcd53","#fed75e","#e9b429"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 460.72,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.banana = {
color: ["#f8e662","#ffe312","#fee402","#fed601"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#fae7b5" },
"concrete": { elem1:"juice", chance:0.1, color1:"#fae7b5" },
"basalt": { elem1:"juice", chance:0.1, color1:"#fae7b5" },
"limestone": { elem1:"juice", chance:0.1, color1:"#fae7b5" },
"tuff": { elem1:"juice", chance:0.1, color1:"#fae7b5" },
"acid": { elem1:"juice", color1:"#fae7b5" },
"acid_gas": { elem1:"juice", color1:"#fae7b5" },
},
breakInto: "jam",
breakIntoColor: ["#d6aa46","#e3b544","#cda23a","#e3c869"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 634.01,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.blackberry = {
color: ["#5c2f3e","#281c2a","#02060f","#19252c"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#7b1e57" },
"concrete": { elem1:"juice", chance:0.1, color1:"#7b1e57" },
"basalt": { elem1:"juice", chance:0.1, color1:"#7b1e57" },
"limestone": { elem1:"juice", chance:0.1, color1:"#7b1e57" },
"tuff": { elem1:"juice", chance:0.1, color1:"#7b1e57" },
"acid": { elem1:"juice", color1:"#7b1e57" },
"acid_gas": { elem1:"juice", color1:"#7b1e57" },
},
breakInto: "jam",
breakIntoColor: ["#481317","#50030d","#250b0c","#62020d"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 608.65,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.blueberry = {
color: ["#385f9e","#386891","#4874b5","#4b8ee3"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#933487" },
"concrete": { elem1:"juice", chance:0.1, color1:"#933487" },
"basalt": { elem1:"juice", chance:0.1, color1:"#933487" },
"limestone": { elem1:"juice", chance:0.1, color1:"#933487" },
"tuff": { elem1:"juice", chance:0.1, color1:"#933487" },
"acid": { elem1:"juice", color1:"#933487" },
"acid_gas": { elem1:"juice", color1:"#933487" },
},
breakInto: "jam",
breakIntoColor: ["#48132c","#6f3a56","#13030d","#351123"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 625.56,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.kiwi = {
color: ["#be8456","#cb8a3e","#bc7742","#975e25"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#eef299" },
"concrete": { elem1:"juice", chance:0.1, color1:"#eef299" },
"basalt": { elem1:"juice", chance:0.1, color1:"#eef299" },
"limestone": { elem1:"juice", chance:0.1, color1:"#eef299" },
"tuff": { elem1:"juice", chance:0.1, color1:"#eef299" },
"acid": { elem1:"juice", color1:"#eef299" },
"acid_gas": { elem1:"juice", color1:"#eef299" },
},
breakInto: "jam",
breakIntoColor: ["#beb43c","#b7ac41","#8d7614","#755e11"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 748.14,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.mango = {
color: ["#ff1f25","#f97231","#fdeb1d","#85b624"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#ffbf34" },
"concrete": { elem1:"juice", chance:0.1, color1:"#ffbf34" },
"basalt": { elem1:"juice", chance:0.1, color1:"#ffbf34" },
"limestone": { elem1:"juice", chance:0.1, color1:"#ffbf34" },
"tuff": { elem1:"juice", chance:0.1, color1:"#ffbf34" },
"acid": { elem1:"juice", color1:"#ffbf34" },
"acid_gas": { elem1:"juice", color1:"#ffbf34" },
},
breakInto: "jam",
breakIntoColor: ["#ef9d00","#fdb005","#fed803","#fbdd00"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 697.41,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.orange = {
color: ["#ffa500","#ff951d","#ffb20a","#f68310"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#f7ca05" },
"concrete": { elem1:"juice", chance:0.1, color1:"#f7ca05" },
"basalt": { elem1:"juice", chance:0.1, color1:"#f7ca05" },
"limestone": { elem1:"juice", chance:0.1, color1:"#f7ca05" },
"tuff": { elem1:"juice", chance:0.1, color1:"#f7ca05" },
"acid": { elem1:"juice", color1:"#f7ca05" },
"acid_gas": { elem1:"juice", color1:"#f7ca05" },
},
breakInto: "jam",
breakIntoColor: ["#edb848","#f6b23e","#e59e12","#eca528"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 435, // these oranges have peels so they float [:
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.peach = {
color: ["#ffc612","#f78a00","#d43d22","#a41622"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#ffc663" },
"concrete": { elem1:"juice", chance:0.1, color1:"#ffc663" },
"basalt": { elem1:"juice", chance:0.1, color1:"#ffc663" },
"limestone": { elem1:"juice", chance:0.1, color1:"#ffc663" },
"tuff": { elem1:"juice", chance:0.1, color1:"#ffc663" },
"acid": { elem1:"juice", color1:"#ffc663" },
"acid_gas": { elem1:"juice", color1:"#ffc663" },
},
breakInto: "jam",
breakIntoColor: ["#f59400","#f29e04","#e9a230","#eead37"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 650.92,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.plum = {
color: ["#952444","#5a2346","#3e2141","#450a1a"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#a10013" },
"concrete": { elem1:"juice", chance:0.1, color1:"#a10013" },
"basalt": { elem1:"juice", chance:0.1, color1:"#a10013" },
"limestone": { elem1:"juice", chance:0.1, color1:"#a10013" },
"tuff": { elem1:"juice", chance:0.1, color1:"#a10013" },
"acid": { elem1:"juice", color1:"#a10013" },
"acid_gas": { elem1:"juice", color1:"#a10013" },
},
breakInto: "jam",
breakIntoColor: ["#a9050c","#55081a","#781123","#4f1e2f"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 697.41,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.pomegranate = {
color: ["#fd4127","#be2216","#aa1519","#330104"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#c9002c" },
"concrete": { elem1:"juice", chance:0.1, color1:"#c9002c" },
"basalt": { elem1:"juice", chance:0.1, color1:"#c9002c" },
"limestone": { elem1:"juice", chance:0.1, color1:"#c9002c" },
"tuff": { elem1:"juice", chance:0.1, color1:"#c9002c" },
"acid": { elem1:"juice", color1:"#c9002c" },
"acid_gas": { elem1:"juice", color1:"#c9002c" },
},
breakInto: "jam",
breakIntoColor: ["#4b0000","#6b0900","#a3000e","#c80402"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 1150,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.rambutan = {
color: ["#9a1408","#eb2814","#9bf05f","#f6ffff"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#eae6dd" },
"concrete": { elem1:"juice", chance:0.1, color1:"#eae6dd" },
"basalt": { elem1:"juice", chance:0.1, color1:"#eae6dd" },
"limestone": { elem1:"juice", chance:0.1, color1:"#eae6dd" },
"tuff": { elem1:"juice", chance:0.1, color1:"#eae6dd" },
"acid": { elem1:"juice", color1:"#eae6dd" },
"acid_gas": { elem1:"juice", color1:"#eae6dd" },
},
breakInto: "jam",
breakIntoColor: ["#60271a","#773119","#841e01","#953810"],
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 281,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.strawberry = {
color: ["#c53415","#ea1720","#f1232d","#ea7e72"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#f53c28" },
"concrete": { elem1:"juice", chance:0.1, color1:"#f53c28" },
"basalt": { elem1:"juice", chance:0.1, color1:"#f53c28" },
"limestone": { elem1:"juice", chance:0.1, color1:"#f53c28" },
"tuff": { elem1:"juice", chance:0.1, color1:"#f53c28" },
"acid": { elem1:"juice", color1:"#f53c28" },
"acid_gas": { elem1:"juice", color1:"#f53c28" },
},
breakInto: "jam",
// Jam is strawberry-colored by default akschully
tempHigh: 256,
stateHigh: ["steam", "sugar"],
density: 642.47,
isFood: true,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\n"
}
// Vanilla items
elements.vanilla_bean = {
alias: "vanilla",
color: ["#362C1D","#6f4a3b","#764735","#593b30"],
category: "Community",
state: "solid",
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"vanilla_extract", chance:0.1 },
"concrete": { elem1:"vanilla_extract", chance:0.1 },
"basalt": { elem1:"vanilla_extract", chance:0.1 },
"limestone": { elem1:"vanilla_extract", chance:0.1 },
"tuff": { elem1:"vanilla_extract", chance:0.1 },
"acid": { elem1:"vanilla_extract" },
"acid_gas": { elem1:"vanilla_extract", },
},
breakInto: "vanilla_extract",
tempHigh: 315,
stateHigh: ["steam","ash"],
density: 1100,
desc: "Added in version 2.0 of Community Desserts.\n"
}
elements.vanilla_extract = {
// Will have more application one day
color: ["#5e1b00","#321501"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
tempHigh: 285,
stateHigh: ["steam", "alcohol_gas"],
density: 879.16,
viscosity: 5000,
stain: 0.45,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by smashing Vanilla Bean.\nFrom lethanaero.\n",
}
// Mousse items
elements.mousse = {
color: ["#fffdce","#fffee2","#fffff5"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
tempHigh: 286,
stateHigh: ["steam", "smoke", "smoke", "sugar"],
density: 1707.61,
viscosity: 5000000, // is there a limit?
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by hard mixing Jam and Sweetened Condensed Milk.\nFrom brickmaster0513.\n",
}
// Tiramisu items
elements.egg_ribbons = {
color: ["#ffdc5e","#ffe07c"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
tempHigh: 150,
stateHigh: ["smoke","hard_yolk"],
tempLow: 0,
stateLow: ["sugar","hard_yolk"],
density: 1227.5,
viscosity: 300,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by hard mixing Yolk and Sugar.\n",
}
elements.mascarpone = {
color: ["#faf9f1","#faf9f7"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
reactions: {
"egg_ribbons": { elem1:"tiramisu_cream", elem2:null }
},
tempHigh: 218,
stateHigh: ["smoke","smoke"],
density: 946.79,
viscosity: 30000,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by mixing Acid with Milk or Cream at 85°C+.\n",
}
elements.tiramisu_cream = {
color: ["#fff0d1","#fbefd7"],
category: "Community",
state: "liquid",
behavior: behaviors.LIQUID,
tempHigh: 218,
stateHigh: ["smoke","smoke"],
density: 946.79,
viscosity: 30000,
hidden: true,
desc: "Added in version 2.0 of Community Desserts.\nMade by mixing Egg Ribbons with Mascarpone.\nCan be layered with other items to make tiramisu, from tisqbisque.\n",
}
// Adjusting existing elements here
elements.milk.reactions = {
"melted_chocolate": { elem1:"chocolate_milk", elem2:null },
"chocolate": { elem1:"chocolate_milk", elem2:"melted_chocolate", chance:0.05 },
"coffee_ground": { elem1:"chocolate_milk", chance:0.05 },
"juice": { elem1:"fruit_milk", elem2:null, chance:0.05 },
"soda": { elem1:"pilk", elem2:null, chance:0.1 },
"yolk": { elem1:"eggnog", elem2:null, chance:0.1 },
"cell": { elem1:"yogurt", chance:0.1 },
"ash": { elem1:"soap", chance:0.1 },
"dirt": { elem1: null, elem2: "mud" },
"sand": { elem1: null, elem2: "wet_sand" },
"clay_soil": { elem1: null, elem2: "clay" },
"caramel": { color1:"#C8B39A", elem2:null, chance:0.05 },
// Start mod items here
"sugar": { elem1:"sweetened_condensed_milk", elem2:null, chance:0.05, tempMin:85 },
"acid": { elem1:null, elem2:"cream_cheese", chance:0.8 },
}
if (!elements.milk.reactions) { elements.milk.reactions = {} };
elements.milk.reactions.acid = { elem1: null, elem2: "cream_cheese", chance: 0.8 };
elements.milk.reactions.sugar = { elem1: "sweetened_condensed_milk", elem2: null, chance: 0.05, tempMin: 85 };
elements.cream.reactions = {
"dirt": { elem1: null, elem2: "mud" },
"sand": { elem1: null, elem2: "wet_sand" },
"clay_soil": { elem1: null, elem2: "clay" },
"melted_chocolate": { color1:"#664934", elem2:null },
"chocolate": { color1:"#664934", elem2:"melted_chocolate", chance:0.05 },
"juice": { elem1:"fruit_milk", elem2:null, chance:0.05 },
"soda": { elem1:"pilk", elem2:null, chance:0.1 },
"yolk": { elem1:"#eggnog", elem2:null, chance:0.1 },
"caramel": { color1:"#C8B39A", chance:0.05 },
"sugar": { elem2:null, chance:0.005},
// Start mod items here
"acid": { elem1:null, elem2:"cream_cheese", chance:0.8 },
if (!elements.cream.reactions) { elements.cream.reactions = {} };
elements.cream.reactions.acid = { elem1: "cream_cheese", elem2: null, chance: 0.8, tempMax:90 };
if (!elements.acid.reactions) { elements.acid.reactions = {} };
elements.acid.reactions.cream = { elem1: null, elem2: "mascarpone", chance: 0.5, tempMin:85 };
if (!elements.dough.reactions) { elements.dough.reactions = {} };
elements.dough.reactions.butter = { elem1: "pie_crust_batter", elem2: null, chance: 0.05 };
if(elements.sugar.reactions.grape) { delete elements["sugar"].reactions.grape; }; // I would remove the reactions entirely but I don't want to mess with other mods
if(elements.caramel.reactions.grape) { delete elements["caramel"].reactions.grape; };
if(elements.grape.reactions.water) { delete elements["grape"].reactions.water };
if(elements.grape.reactions.sugar_water) { delete elements["grape"].reactions.sugar_water };
if (!elements.grape.hidden) { elements.grape.hidden = true };
elements.grape.breakInto = "jam";
if (!elements.jelly.desc) { elements.jelly.desc = "Changed in version 2.0 of Community Desserts.\nMade by mixing Jam and Water at temperatures 95°C+.\n" };
if (!elements.jelly.hidden) { elements.jelly.hidden = true };
elements.jelly.viscosity = 150000;
elements.jelly.stain = 0.25;
elements.yolk.onMix = function(pixel,sugarcheck) {
if (elements[sugarcheck.element].id == elements.sugar.id && shiftDown && Math.random() < 0.35) {
deletePixel(sugarcheck.x, sugarcheck.y);
changePixel(pixel, "egg_ribbons");
}
}
// Mod items first
elements.acid.ignore = ["cream_cheese","cream","milk",
"glass","rad_glass","glass_shard","rad_shard","stained_glass","baked_clay","acid_gas","neutral_acid","acid_cloud","water","salt_water","sugar_water","dirty_water","copper","gold","porcelain","plastic","bead","microplastic","molten_plastic","pool_water","chlorine","hydrogen","gold_coin","silver","nickel","calcium","bone"];
elements.acid.ignore = ["cream_cheese", "cream", "milk", "mascarpone",
"glass", "rad_glass", "glass_shard", "rad_shard", "stained_glass", "baked_clay", "acid_gas", "neutral_acid", "acid_cloud", "water", "salt_water", "sugar_water", "dirty_water", "copper", "gold", "porcelain", "plastic", "bead", "microplastic", "molten_plastic", "pool_water", "chlorine", "hydrogen", "gold_coin", "silver", "nickel", "calcium", "bone"];
// For new colors
function shiftColor(base, change, direction) {
const colorRegEx = /^\#?[A-Fa-f0-9]{6}$/;
// Missing parameter(s)
if (!base || !change) {
console.log("Parameter absent!");
return '#000000';
}
// Invalid parameter(s)
if (!base.match(colorRegEx) || !change.match(colorRegEx)) {
console.log("Parameter bad!");
return '#000000';
}
// Remove any '#'
base = base.replace(/\#/g, '');
change = change.replace(/\#/g, '');
// Build new color
let newColor = '';
for (let i = 0; i < 3; i++) {
const basePiece = parseInt(base.substring(i * 2, i * 2 + 2), 16);
const changePiece = parseInt(change.substring(i * 2, i * 2 + 2), 16);
let newPiece = '';
if (direction === 'add') { // Adding a lighter color makes it darker. #000000 does effectively nothing! #ffffff makes it fully white!
newPiece = (basePiece + changePiece);
newPiece = newPiece > 255 ? 255 : newPiece;
}
if (direction === 'sub') { // Subtracting a darker color makes it closer to original. #000000 does effectively nothing! #ffffff makes it fully black!
newPiece = (basePiece - changePiece);
newPiece = newPiece < 0 ? 0 : newPiece;
}
newPiece = newPiece.toString(16);
newPiece = newPiece.length < 2 ? '0' + newPiece : newPiece;
newColor += newPiece;
}
return '#' + newColor;
}
function rgbToHex(rgbObj) {
var values = rgbObj.substring(rgbObj.indexOf('(') + 1, rgbObj.lastIndexOf(')')).split(',');
var r = parseInt(values[0]);
var g = parseInt(values[1]);
var b = parseInt(values[2]);
return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
function componentToHex(c) {
let hex = c.toString(16);
return hex.length == 1 ? "0" + hex : hex;
}

50
mods/customtemptools.js Normal file
View File

@ -0,0 +1,50 @@
var ct = 100
elements.customtemp = {
color: ["#FF0000", "#FF6600", "#FFCC00", "#FFFF00", "#CCFF00", "#66FF00", "#00FF00", "#00FF66", "#00FFCC", "#00FFFF"],
onSelect: function() {
var answer4 = parseInt(prompt("Please input the desired temperature to reach.",(ct||undefined)));
if (!answer4) { return }
ct = answer4;
if (isNaN(answer4)) {
ct = 100
}
},
tool: function(pixel) {
pixel.temp = ct,
pixelTempCheck(pixel)
},
category: "tools",
};
elements.customheat = {
color: ["#FF0000", "#FFFFFF", "#FF0000"],
onSelect: function() {
var answer4 = parseInt(prompt("Please input the desired temperature increase per tick. (In celsius)",(ct||undefined)));
if (!answer4) { return }
ct = answer4;
if (isNaN(answer4)) {
ct = 100
}
},
tool: function(pixel) {
pixel.temp = pixel.temp + ct,
pixelTempCheck(pixel)
},
category: "tools",
};
elements.customcool = {
color: ["#0000FF", "#FFFFFF", "#0000FF"],
onSelect: function() {
var answer4 = parseInt(prompt("Please input the desired temperature decrease per tick. (In celsius)",(ct||undefined)));
if (!answer4) { return }
ct = answer4;
if (isNaN(answer4)) {
ct = 100
}
},
tool: function(pixel) {
pixel.temp = pixel.temp - ct,
pixelTempCheck(pixel)
},
category: "tools",
};

609
mods/drills.js Normal file
View File

@ -0,0 +1,609 @@
/* Made by: Necrotic_Phantom
With help from: voidapex11 */
// For change log: "+" = addition, "-" = removal and "~" = change. L, R, U, D corresponds to LEFT, RIGHT, UP and DOWN
// "committed" means posted current version on github. It is a courtesy and important, especially if you're working on another person's mod at the same time as them, so you don't disrupt each other's work
/*
===CHANGE LOG===
Version: 1.0.0
@Necrotic_Phantom & @voidapex11
+ steel drill L, R, U & D
+ steel drill missile L, R, U & D
+ diamond drill L, R, U & D
+ diamond drill missile L, R, U & D
+ void drill L, R, U & D
+ void drill missile L, R, U & D
+ drills.js info (drills_info) element to 'mods' category
~ changed all element colors from gray to individual colors
~ fixed steel/diamond/void drill missile L, R, U & D drilling errors
~ fixed steel/diamond/void drill R & steel/diamond/void drill missile R crashing upon border collision
~ made steel/diamond/void drill missile L, R, U & D explode upon border contact
~ committed
*/
/* Future Plans (in approx order):
~ find error/fix all types of drill_RIGHT crashing game a few seconds after hitting border
+ reverse steel drill L, R, U & D
+ reverse diamond drill L, R, U & D
+ reverse void drill L, R, U & D
+ random steel drill
+ random steel drill missile
+ random reverse steel drill
+ random diamond drill
+ random diamond drill missile
+ random reverse diamond drill
+ random void drill
+ random void drill missile
+ random reverse void drill
+ programmable steel drill
+ programmable steel drill missile
+ programmable reverse steel drill
+ programmable diamond drill
+ programmable diamond drill missile
+ programmable reverse diamond drill
+ programmable void drill
+ programmable void drill missile
+ programmable reverse void drill
+ seeking steel drill
+ seeking steel drill missile
+ seeking reverse steel drill
+ seeking diamond drill
+ seeking diamond drill missile
+ seeking reverse diamond drill
+ seeking void drill
+ seeking void drill missile
+ seeking reverse void drill
+ ricochet drills??? */
drills_mod_desc_Colour = "#000000"
steel_drill_Colour = "#71797e"
steel_drill_missile_Colour = ["#71797e", "#ff0000"];
diamond_drill_Colour = "#03fcec"
diamond_drill_missile_Colour = ["#03fcec", "#ff0000"];
void_drill_Colour = "#262626"
void_drill_missile_Colour = ["#262626", "#ff0000"];
elements.drills_info = {
color: drills_mod_desc_Colour,
name: "drills.js_info",
category: "Mods",
behavior: behaviors.SELFDELETE,
maxSize: 1,
tool: function(pixel) {},
onSelect: function(pixel) {
let info1stMod = "The drills.js mod adds different kinds of drills to a new 'drills' category.\n\nMod made by: Necrotic_Phantom. \n With help from: voidapex11."
alert(info1stMod)
return
},
};
steel_drill_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
if (elements[pxl.element].hardness <= 0.8) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
};
doDefaults(pixel);
}
elements.steel_drill_LEFT = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
elements.steel_drill_RIGHT = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
elements.steel_drill_UP = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
elements.steel_drill_DOWN = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
steel_drill_missile_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (pixel.die <= 0) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
return true
};
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
pixel.primed = true
if (elements[pxl.element].hardness <= 0.8) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
}
else if (pixel.primed) {
pixel.die--
return true
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
}
else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
};
doDefaults(pixel);
}
elements.steel_drill_missile_LEFT = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.steel_drill_missile_RIGHT = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.steel_drill_missile_UP = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.steel_drill_missile_DOWN = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
diamond_drill_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
if (elements[pxl.element].hardness <= 0.99) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
};
doDefaults(pixel);
}
elements.diamond_drill_LEFT = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
elements.diamond_drill_RIGHT = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
elements.diamond_drill_UP = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
elements.diamond_drill_DOWN = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
diamond_drill_missile_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (pixel.die <= 0) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
return true
};
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
pixel.primed = true
if (elements[pxl.element].hardness <= 0.99) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
}
else if (pixel.primed) {
pixel.die--
return true
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
}
else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
};
doDefaults(pixel);
}
elements.diamond_drill_missile_LEFT = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.diamond_drill_missile_RIGHT = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.diamond_drill_missile_UP = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.diamond_drill_missile_DOWN = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
void_drill_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
if (elements[pxl.element].hardness <= 1) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
};
doDefaults(pixel);
}
elements.void_drill_LEFT = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
elements.void_drill_RIGHT = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
elements.void_drill_UP = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
elements.void_drill_DOWN = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
void_drill_missile_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (pixel.die <= 0) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
return true
};
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
pixel.primed = true
if (elements[pxl.element].hardness <= 1) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
}
else if (pixel.primed) {
pixel.die--
return true
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
}
else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
};
doDefaults(pixel);
}
elements.void_drill_missile_LEFT = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.void_drill_missile_RIGHT = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.void_drill_missile_UP = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.void_drill_missile_DOWN = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}

View File

@ -4,10 +4,10 @@ elements.potato_chip = {
density: 1350,
color: ["#F7DD93", "#D8A44B"],
category: "food",
desc: "Potato chip. Turns potato next to it into potato chip if temp is >= 104.",
desc: "Potato chip. Turns potato next to it into potato chip if temp is >= 104 - 180.",
tick: function(pixel) {
if(pixelTicks - pixel.start >= 15) {
if(pixelTicks - pixel.start >= 10) {
if (!isEmpty(pixel.x, pixel.y - 1, true)) {
if (pixel.temp >= 104 && pixelMap[pixel.x][pixel.y - 1].element === "potato") {
changePixel(pixelMap[pixel.x][pixel.y - 1], "potato_chip");

View File

@ -1,35 +1,36 @@
window.addEventListener("load", () => {
document.getElementById("elementButton-mask_head")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-mask_body")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-infected_skin")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-infected_meat")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-frozen_infected_meat")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-zombie")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-z_head")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-z_body")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-REDACTED")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-hyper_tickle_monster")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-calm_682")?.remove()
})
window.addEventListener("load", () => {
document.getElementById("elementButton-mad_682")?.remove()
})
@ -57,17 +58,22 @@ elements.SCP_008 = {
reactions: {
"head": { elem1:null, elem2:"z_head" , chance:0.5 },
"body": { elem1:null, elem2:"z_body" , chance:0.5 },
"skin": { elem1:null, elem2: ["infected_skin","infected_skin","infected_meat"] , chance:0.3 },
"blood": { elem1:null, elem2:"infection" , chance:0.6 },
"meat": { elem1:null, elem2:"infected_meat" , chance:0.4 },
"rotten_meat": { elem1:null, elem2:"infected_meat" , chance:0.5 },
"frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.3 },
"frog": { elem2:"SCP_008" , chance:0.5 },
"ant": { elem2:"SCP_008" , chance:0.5 },
"bee": { elem2:"SCP_008" , chance:0.5 },
"fish": { elem2:"SCP_008" , chance:0.5 },
"firefly": { elem2:"SCP_008" , chance:0.5 },
"chlorine": { elem1: [null,null,null,null,"anomalous_essence"] , chance:0.01 },
"liquid_chlorine": { elem1: [null,null,null,null,"anomalous_essence"] , chance:0.01 },
"light": { elem1: [null,null,null,null,"anomalous_essence"] , chance:0.01 },
"chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 },
"liquid_chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 },
"light": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 },
},
tempHigh: 1000,
stateHigh: [null,null,null,null,"anomalous_essence"],
tempHigh: 750,
stateHigh: [null,null,null,null,null,null,null,null,"anomalous_essence"],
tempLow: -100,
stateLow: "frozen_008",
category: "scp",
@ -80,14 +86,19 @@ elements.frozen_008 = {
behavior: [
"XX|XX|XX",
"XX|DL%0.001|X",
"M2%1.0|M1%1.0|M2%1.0",
"XX|M1%1.0|XX",
],
reactions: {
"head": { elem1:null, elem2:"z_head" , chance:0.4 },
"body": { elem1:null, elem2:"z_body" , chance:0.4 },
"chlorine": { elem1: [null,null,null,null,"anomalous_essence"] , chance:0.01 },
"liquid_chlorine": { elem1: [null,null,null,null,"anomalous_essence"] , chance:0.01 },
"light": { elem1: [null,null,null,null,"anomalous_essence"] , chance:0.01 },
"skin": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 },
"blood": { elem1:null, elem2:"infection" , chance:0.6 },
"meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 },
"rotten_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.5 },
"frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 },
"chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 },
"liquid_chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 },
"light": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 },
},
temp: -50,
tempHigh: 0,
@ -96,6 +107,131 @@ elements.frozen_008 = {
state: "solid",
density: 95,
},
elements.infected_skin = {
color: ["#11111f","#75816B","#4D6B53"],
singleColor: true,
behavior: [
"XX|CR:stench,stench,stench,SCP_008,fly%0.05 AND CH:meat>infected_meat%1|XX",
"CH:meat>infected_meat%1|XX|CH:meat>infected_meat%1",
"M2%1.0|M1%1.0 AND CH:meat>infected_meat%1|M2%1.0",
],
tick: function(pixel) {
if (pixel.temp > 40 && Math.random() < 0.003) {
for (var i = 0; i < adjacentCoords.length; i++) {
var coords = adjacentCoords[i];
var x = pixel.x + coords[0];
var y = pixel.y + coords[1];
if (isEmpty(x,y)) {
pixel.temp -= 20;
createPixel("infection",x,y)
break;
}
}
}
if (pixel.temp < 36 && Math.random() < 0.1) {
pixel.temp += 1;
}
doDefaults(pixel);
},
reactions: {
"cell": { chance:0.01, func:function(pixel1,pixel2){
changePixel(pixel2,"infected_skin");
pixel2.color = pixelColorPick(pixel2,RGBToHex(pixel1.color.match(/\d+/g)))
if (pixel1.origColor) { pixel2.origColor = pixel1.origColor }
} },
"skin": { chance:0.01, func:function(pixel1,pixel2){
changePixel(pixel2,"infected_skin");
pixel2.color = pixelColorPick(pixel2,RGBToHex(pixel1.color.match(/\d+/g)))
if (pixel1.origColor) { pixel2.origColor = pixel1.origColor }
} },
"blood": { elem2:"infection" , chance:0.6 },
"acid": { elem1:"infection" },
"soap": { elem1:null, elem2:null, chance:0.005 },
"light": { stain1:"#825043" },
"poison": { stain1:"#cc564b" },
"poison_gas": { stain1:"#cc564b" },
"infection": { stain1:"#cc564b" },
"pollen": { stain1:"#cc564b" },
"dust": { stain1:"#cc564b" },
"flea": { stain1:"#cc564b" },
"mushroom_spore": { stain1:"#cc564b" },
"mushroom_stalk": { stain1:"#cc564b" },
"chlorine": { stain1:"#cc564b" },
"quicklime": { stain1:"#cc564b" },
},
category:"solids",
breakInto: [null,null,"SCP_008","infection","dust"],
temp: 37,
tempHigh: 200,
stateHigh: ["cooked_meat","cooked_meat","cooked_meat","SCP_008"],
tempLow: -18,
stateLow: "frozen_008_meat",
burn:5,
burnTime:400,
burnInto: ["cooked_meat","cooked_meat","SCP_008"],
state: "solid",
density: 1010,
conduct: 0.04,
movable: false,
},
elements.infected_meat = {
color: ["#b8b165","#b89765"],
behavior: [
"XX|CR:stench,stench,stench,SCP_008,fly%0.25 AND CH:rotten_meat,meat>infected_meat%1|XX",
"SP%99 AND CH:rotten_meat,meat>infected_meat%1|XX|SP%99 AND CH:rotten_meat,meat>infected_meat%1",
"XX|M1 AND CH:rotten_meat,meat>infected_meat%1|XX",
],
reactions: {
"water": { elem2:"dirty_water" },
"salt_water": { elem2:"dirty_water" },
"sugar_water": { elem2:"dirty_water" },
"dirty_water": { elem2:"broth", tempMin:70, color2:"#d7db69" },
"seltzer": { elem2:"dirty_water" },
"fly": { elem1: [null,null,"SCP_008"] , elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2},
"blood": { elem2:"infection" , chance:0.6 },
"skin": { elem2:"infected_skin" , chance:0.6 },
},
tempHigh: 300,
stateHigh: ["SCP_008","ash","ammonia"],
tempLow: -20,
stateLow: "frozen_infected_meat",
category:"scp",
hidden: true,
burn:12,
burnTime:200,
burnInto:["SCP_008","ash","ammonia"],
state: "solid",
density: 1005,
conduct: 0.1,
isFood: true
},
elements.frozen_infected_meat = {
color: "#242424",
behavior: [
"XX|CH:rotten_meat,frozen_meat>frozen_infected_meat%1|XX",
"SP%99 AND CH:rotten_meat,frozen_meat>frozen_infected_meat%1|XX|SP%99 AND CH:rotten_meat,frozen_meat>frozen_infected_meat%1",
"XX|M1 AND CH:rotten_meat,frozen_meat>frozen_infected_meat%1|XX",
],
reactions: {
"water": { elem2:"dirty_water" },
"salt_water": { elem1:"infected_meat",elem2:"dirty_water" , chance:0.5 },
"sugar_water": { elem2:"dirty_water" },
"seltzer": { elem2:"dirty_water" },
"fly": { elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2},
"blood": { elem2:"infection" , chance:0.6 },
},
temp: -20,
tempHigh: 10,
stateHigh: "infected_meat",
category:"scp",
hidden: true,
state: "solid",
density: 1005,
conduct: 0.05,
},
elements.possessive_mask = {
color: ["#f7ead0","#faf9f6","#e9e6db"],
@ -376,7 +512,7 @@ elements.black_acid = {
tempLow: -58.88,
burn: 30,
burnTime: 10,
burnInto: ["fire","fire","fire","fire","fire","fire","fire","fire","ash","ash","anomalous_essence"],
burnInto: ["fire","fire","fire","fire","fire","fire","fire","fire","ash","ash","fire","fire","fire","fire","ash","ash","anomalous_essence"],
fireColor: "#111111",
state: "liquid",
density: 1105,
@ -394,7 +530,7 @@ elements.SCP_055 = {
category: "scp",
state: "solid",
tempHigh: 55055055055,
stateHigh: ["metal_scrap","smoke","smoke","anomalous_essence"],
stateHigh: ["metal_scrap","metal_scrap","smoke","smoke","smoke","smoke","smoke","smoke","smoke",null,"anomalous_essence"],
},
elements.REDACTED = {
@ -408,6 +544,7 @@ elements.REDACTED = {
],
category: "scp",
state: "solid",
movable: false,
},
elements.plague_doctor = {
@ -428,7 +565,7 @@ elements.plague_doctor = {
createPixel("doc_head", pixel.x, pixel.y-1);
pixelMap[pixel.x][pixel.y-1].color = pixel.color;
pixel.element = "doc_body";
pixelMap[pixel.x][pixel.y].color = ["#11111f","#242424"];
pixel.color = pixelColorPick(pixel)
}
else {
deletePixel(pixel.x, pixel.y);
@ -820,7 +957,7 @@ elements.shy_head = {
hidden: true,
color: ["#f7ead0","#faf9f6","#e9e6db"],
category: "scp",
breakInto: ["bone","bone","blood","bone","bone","blood","anomalous_essence"],
breakInto: ["bone","bone","blood","bone","bone","blood","bone","bone","blood","bone","bone","blood","anomalous_essence"],
properties: {
dead: false
},
@ -854,7 +991,7 @@ elements.shy_head = {
pixel.dead = pixelTicks;
}
}
}
}
// homeostasis
if (pixel.temp > 37) { pixel.temp -= 1; }
else if (pixel.temp < 37) { pixel.temp += 1; }
@ -875,7 +1012,6 @@ elements.shy_head = {
"z_body": { elem2: ["infection","infection","rotten_meat","bone",null] },
"rat": { elem2: ["infection","rotten_meat",null]},
"frog": { elem2: ["slime",null] },
"cell": { elem2: ["dna","water",null] },
"cancer": { elem2: ["dna","dirty_water",null], },
"blood": { elem2: null, chance:0.2 },
"bone": { elem2: null, chance:0.2 },
@ -890,7 +1026,7 @@ elements.shy_body = {
hidden: true,
color: ["#f7ead0","#faf9f6","#e9e6db"],
category: "scp",
breakInto: ["bone","bone","blood","bone","bone","blood","anomalous_essence"],
breakInto: ["bone","bone","blood","bone","bone","blood","bone","bone","blood","bone","bone","blood","anomalous_essence"],
properties: {
dead: false,
dir: 1,
@ -1004,7 +1140,7 @@ elements.SCP_682 = {
color: ["#424242","#75816B","#4D6B53"],
behavior: [
"M2%0.5|M2%0.3|M2%0.5",
"M1%10|XX|M1%10",
"M2%10|XX|M2%10",
"XX|M1|XX",
],
category: "scp",
@ -1067,7 +1203,7 @@ elements.mad_682 = {
color: ["#424242","#75816B","#4D6B53"],
behavior: [
"M2%0.5|M2%0.3|M2%0.5",
"M1%10 AND CH:concrete>dust AND DL:dust|CH:SCP_682%0.3|M1%10 AND CH:concrete>dust AND DL:dust",
"M2%10|CH:SCP_682%0.3|M2%10",
"XX|M1|XX",
],
category: "scp",
@ -1093,8 +1229,8 @@ elements.mad_682 = {
"lead": { elem2 : ["metal_scrap","metal_scrap","radiation"] , chance:0.3 },
"glass": { elem2 : "glass_shard" },
"wood": { elem2 : "sawdust" },
"concrete": { elem2 : "dust" , chance:0.1 },
"dust": { elem2 : null , chance:0.1 },
"concrete": { elem2 : "dust" , chance:10 },
"dust": { elem2 : null , chance:10 },
},
hidden: true,
state: "solid",