This commit is contained in:
JustAGenericUsername 2024-04-03 18:34:58 -04:00
commit 35a7ed5981
25 changed files with 6663 additions and 806 deletions

View File

@ -15667,6 +15667,10 @@ window.onload = function() {
}
}
}
// if the user is in an input, return
if (document.activeElement.tagName === "INPUT" || document.activeElement.tagName === "TEXTAREA") {
return;
}
// [ or - = decrease the mouse size by 2
if (e.keyCode == 219 || e.keyCode == 189) {
if (shiftDown) {mouseSize = 1}
@ -16219,7 +16223,21 @@ Cancer, Landmine, Grenade, Smoke Grenade">?</span> <input type="button" value="O
</optgroup>
</select></p>
<p>Email us at <a href="mailto:contact@R74n.com">contact@R74n.com</a> for advertising, help, or education!</p>
<iframe id="newsletteriframe" width="450" height="250" style="border:1px solid #EEE; background:black; max-width:90%" frameborder="0" scrolling="no"></iframe>
<div id="newsletterFrame">Be notified when Sandboxels and other R74n projects are updated, along with ramblings from the developer!<br><br>
<form action="https://news.r74n.com/api/v1/free?nojs=true" method="post" class="form _form_1mxvn_6" novalidate="" target="_blank"><input type="hidden" name="first_url" value="https://news.r74n.com/embed"><input type="hidden" name="first_referrer"><input type="hidden" name="current_url" value="https://news.r74n.com/embed"><input type="hidden" name="current_referrer"><input type="hidden" name="referral_code"><input type="hidden" name="source" value="embed"><input type="hidden" name="referring_pub_id"><input type="hidden" name="additional_referring_pub_ids">
<input type="email" placeholder="Type your email..." name="email" style="padding:15px"><input type="submit" value="Subscribe" style="background: rgb(23, 166, 255); padding:15px; border-radius: 20px"></input>
</div>
<style>
#newsletterFrame {
max-width: 600px;
margin: auto;
padding: 5px;
padding-top: 15px;
padding-bottom: 15px;
border: white solid 2px;
}
</style>
<!-- <iframe id="newsletteriframe" width="450" height="250" style="border:1px solid #EEE; background:black; max-width:90%" frameborder="0" scrolling="no"></iframe>
<script>
window.addEventListener('load', function() {
document.getElementById("newsletteriframe").src = "https://news.r74n.com/embed";
@ -16231,7 +16249,7 @@ Cancer, Landmine, Grenade, Smoke Grenade">?</span> <input type="button" value="O
document.getElementById("langCredit").style.display = "block";
}
})
</script>
</script> -->
<p>Support development by subscribing on <a href="https://www.patreon.com/R74n" rel="me" target="_blank">our Patreon</a>! Many benefits!!</p>
</div>

View File

@ -523,21 +523,21 @@
"molten_potassium_salt":"stopiona_sól_potasowa",
"molten_sodium_acetate":"stopiony_octan_sodu",
"frozen_nitro":"zamrożona_nitrogliceryna",
"cured_meat": "",
"cured_meat": "wędzone_mięso",
"nut_oil": "olej z orzechów",
"grease": "",
"grease": "smar",
"fat": "tłuszcz",
"potassium": "potas",
"molten_potassium": "roztopiony_potas",
"magnesium": "",
"molten_magnesium": "",
"magnesium": "magnez",
"molten_magnesium": "stopiony_magnez",
"sandstorm": "burza_piaskowa",
"caustic_potash": "",
"antibomb": "",
"antibomb": "antybomba",
"tornado": "tornado",
"earthquake": "trzęsienie_ziemi",
"tsunami": "tsunami",
"blaster": "promień",
"propane_ice": "",
"propane_ice": "lód_propanowy",
"molten_caustic_potash": ""
}

File diff suppressed because it is too large Load Diff

View File

@ -110,6 +110,7 @@
<tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>fools.js</td><td>Adds back FOOLS Mode</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>fools24.js</td><td>Adds back the 2024 Multiversal Update (v5.9.1)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>smooth_water.js</td><td>Changes water mechanics so that it flows in one direction until it bounces off of something</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>survival.js</td><td>With limited resources, you must craft, sell, and buy to progress</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
@ -178,6 +179,7 @@
<tr><td>Neutronium Mod.js</td><td>Variety of scientific elements<br>Explosions</td><td>StellarX20</td></tr>
<tr><td>neutronium_compressor.js</td><td>Adds a compressor (in reference to Minecrafts Avaritia mod) that compresses 10,000 pixels of an element into a “singularity”</td><td>Alice</td></tr>
<tr><td>noblegas.js</td><td>Adds the missing noble gases</td><td>nousernamefound</td></tr>
<tr><td>radioactive.js</td><td>Adds every radioactive elements on the periodic table (WIP)</td><td>kaeud</td></tr>
<tr><td>random_rocks.js</td><td>Randomly generates rocks on game load</td><td>Alice</td></tr>
<tr><td>roseyiede.js</td><td>Adds several variants of a substance called roseyiede</td><td>Alice</td></tr>
<tr><td>some_tf_liquids.js</td><td>Adds various liquids from the Thermal Foundation Minecraft mod</td><td>Alice</td></tr>
@ -196,12 +198,13 @@
<tr><td>nousersthings.js</td><td>Destroyable machines, pipe variants, filters, and more</td><td>nousernamefound</td></tr>
<tr><td>portal.js</td><td>Adds portals that can teleport pixels</td><td>Alice</td></tr>
<tr><td>pushers.js</td><td>Adds pixels that push elements away from them</td><td>Alice</td></tr>
<tr><td>spouts.js</td><td>Adds spouts for all liquids</td><td>Alice</td></tr>
<tr><td>spouts.js</td><td>Adds spouts for all liquids</td><td>kaeud</td></tr>
<tr><td>state_voids.js</td><td>Adds several elements that each delete a specific state of matter (and combinations thereof)</td><td>Alice</td></tr>
<tr><td>switches.js</td><td>Adds electrical switches that can be toggled</td><td>Alice</td></tr>
<tr><td>ticking_temp_stuff.js</td><td>Adds more heaters and coolers</td><td>Alice</td></tr>
<tr><td>video.js</td><td>Adds a video player</td><td>ggod</td></tr>
<tr><td>waterspout.js</td><td>Adds back the old Water Spout</td><td>mollthecoder</td></tr>
<tr><td>WhisperingTheory.js</td><td>Adds many more variants of heater and cooler</td><td>kaeud</td></tr>
<!----><tr><td class="modCat" colspan="3">Weapons</td></tr><!---->
<tr><td>aircrafts.js</td><td>Adds aircraft and aircraft part pixels</td><td>Jayd</td></tr>
@ -214,7 +217,7 @@
<tr><td>weapons.js</td><td>Adds some extra weapons</td><td>Jayd</td></tr>
<!----><tr><td class="modCat" colspan="3">Food & Cooking</td></tr><!---->
<tr><td>aChefsDream.js</td><td>Adds more food and animals</td><td>SquareScreamYT and RealerRaddler</td></tr>
<tr><td>aChefsDream.js</td><td>Adds more foods, animals, tools and many other cooking related items</td><td>SquareScreamYT, RealerRaddler</td></tr>
<tr><td>bananas.js</td><td>Adds bananas and banana plants</td><td>Alice</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>
@ -226,7 +229,6 @@
<tr><td>weAllScreamFor.js</td><td>Adds ice cream toppings</td><td>rottenEgghead</td></tr>
<!----><tr><td class="modCat" colspan="3">Life & Nature</td></tr><!---->
<tr><td>aChefsDream.js</td><td>Adds more food and animals</td><td>SquareScreamYT and RealerRaddler</td></tr>
<tr><td>advanced_colonies.js</td><td>Adds davlers, creatures with complex colonies</td><td>DaviStudios</td></tr>
<tr><td>apioforms_pre.js</td><td>An incomplete implementation of elements from the <a href="https://osmarks.net/apioform/">Apioform Game</a></td><td>Alice</td></tr>
<tr><td>bacteria_mod.js</td><td>Adds content from the <a href="https://www.curseforge.com/minecraft/mc-mods/bacterium">Bacterium Mod</a>: (Bacteria, Replacer B., Jammer Block)</td><td>Alice</td></tr>
@ -243,12 +245,13 @@
<tr><td>fwibblen.js</td><td>Adds a flying creature that turns nickel into itself, and a second creature that does the same to the first one</td><td>Alice</td></tr>
<tr><td>human_edit.js</td><td>Improvements to humans</td><td>Alice</td></tr>
<tr><td>kopalstuff.js</td><td>Adds creatures, spirits, DNA, foods, and more</td><td>DaviStudios</td></tr>
<tr><td>lost_souls.js</td><td>Adds souls and related elements, the mod can also be found <a href="url">https://github.com/HACKERPRO908/lost_souls.js</a></td><td>pixelegend4, SquareScreamYT, salmonfishy</td></tr>
<tr><td>lost_souls.js</td><td>Adds souls and related elements, the mod can also be found <a href="https://github.com/HACKERPRO908/lost_souls.js">on Github</a></td><td>pixelegend4, SquareScreamYT, salmonfishy</td></tr>
<tr><td>miscible_psoup_and_birthpool.js</td><td>Makes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical Menagerie</td><td>Alice</td></tr>
<tr><td>mobs.js</td><td>Adds Creepers, Zombies, and Skeletons</td><td>Alice</td></tr>
<tr><td>nocancer.js</td><td>Removes cancer from the game one tick after it is created</td><td>mollthecoder</td></tr>
<tr><td>nocancer2.js</td><td>Removes cancer from the game altogether. May be incompatible with other mods that spawn cancer</td><td>mollthecoder</td></tr>
<tr><td>nograssgrow.js</td><td>Prevents Grass from growing</td><td>mollthecoder</td></tr>
<tr><td>ocean.js</td><td>Adds many Marine life</td><td>SquareScreamYT</td></tr>
<tr><td>pizzasstuff.js</td><td>New animals, foods, and plants</td><td>_ilikepizza_</td></tr>
<tr><td>plants.js</td><td>Adds a wide variety of new plants and fruits</td><td>Adora</td></tr>
<tr><td>primordial_birthpool.js</td><td>A cross between Primordial Soup and Birthpool. Requires F&M</td><td>Alice</td></tr>
@ -263,8 +266,10 @@
<tr><td>allliquids.js</td><td>Made all elements liquids</td><td>Adora</td></tr>
<tr><td>amogus.js</td><td>Adds a small amogus structure</td><td>Alice</td></tr>
<tr><td>citybuilding.js</td><td>Adds seeds that create miniature buildings and other city-related items</td><td>SquareScreamYT</td></tr>
<tr><td>CoCpu.js</td><td>Adds Things that Related with Science and Computers Knowledge</td><td>Carbon Monoxide, CPU</td></tr>
<tr><td>collab_mod.js</td><td>Created by multiple people, adds random things</td><td>mrapple, ilikepizza, stefanblox</td></tr>
<tr><td>elem3.js</td><td>Adds all elements and combinations from Elemental 3 [Very Large]</td><td>Sophie</td></tr>
<tr><td>fools+.js</td><td>improves and makes fools.js EXTREMELY annoying.</td><td>SquareScreamYT</td></tr>
<tr><td>funny elements 2022-11-15.js</td><td>Adds a few curated randomly-generated elements</td><td>Alice</td></tr>
<tr><td>funny_solid.js</td><td>Adds feces</td><td>Alice</td></tr>
<tr><td>haseulite.js</td><td>Adds Loona-related materials with various properties</td><td>Alice</td></tr>
@ -282,6 +287,7 @@
<tr><td>sus.js</td><td>Adds an Among Us crewmate</td><td>Nv7</td></tr>
<tr><td>triggerable_random_powders.js</td><td>Adds powders with different abilities, such as heating and cooling</td><td>Alice</td></tr>
<tr><td>troll.js</td><td>Adds various dumb elements that iterate randomly on the entire screen</td><td>Alice</td></tr>
<tr><td>WhisperingTheory.js</td><td>Adds powder and gas variant of heater and cooler</td><td>kaeud</td></tr>
<!----><tr><td class="modCat" colspan="3">Visual Effects</td></tr><!---->
<tr><td>acid_and_shapes.js</td><td>Weird visual effects. Enable in Settings</td><td>Alice</td></tr>

111
mods/CoCpu.js Normal file
View File

@ -0,0 +1,111 @@
elements.carbon_monoxide = {
color: "#b5b5b5",
behavior: behaviors.GAS,
behaviorOn: [
"XX|XX|XX",
"XX|CH:fire|XX",
"XX|XX|XX",
],
category: "gases",
state: "gas",
density: 1.14,
burn: 75,
tempHigh: 609,
stateHigh: "fire",
tempLow: -192,
stateLow: "liquid_carbon_monoxide",
burntime: 5,
fireColor: "#ebba34",
reactions: {
"head": { elem2:"rotten_meat", chance:0.5 },
"body": { elem2:"rotten_meat", chance:0.5 },
"human": { elem2:"rotten_meat", chance:0.5 },
"plant": { elem1: null },
"bird": { elem2: "rotten_meat", },
"frog": { elem2: "slime", },
"grass": {elem1: null },
"water": {elem1: null },
}
};
elements.liquid_carbon_monoxide = {
color: "#b5b5b5",
behavior: behaviors.LIQUID,
category: "liquids",
state: "liquid",
density: 1.14,
tempHigh: 190,
tempLow: -199,
stateLow: "ice_carbon_monoxide",
stateHigh: "carbon_monoxide",
temp: -192,
};
elements.ice_carbon_monoxide = {
color: "#b5b5b5",
behavior: behaviors.WALL,
category: "solids",
state: "solid",
density: 1.14,
tempHigh: -192,
stateHigh: "liquid_carbon_monoxide",
temp: -199,
};
elements.cpu = {
color: "#575757",
behavior: behaviors.SOLID,
category: "machines",
state: "solid",
density: 75,
tempHigh: 1414,
stateHigh: "explosion",
reactions: {
"virus": { elem1 : null , elem2:"malware", chance:0.9 },
"battery": { elem2:"computer" },
}
};
elements.computer = {
color: "#2b2b2a",
behavior: behaviors.SOLID,
category: "machines",
state: "solid",
density: 8908,
tempHigh: 1414,
stateHigh: "explosion",
reactions: {
"virus": { elem1 : null , elem2:"malware", chance:0.9 },
"water": { elem1: null , elem2: "electric" },
}
};
elements.carbon_monoxide_detector = {
behavior: behaviors.WALL,
desc: "give red light and electric when found Carbon Monoxide touch",
color: "#ffffff",
reactions: {
"carbon_monoxide": {"charge1":1},
},
conduct: 1,
tempHigh: 1550,
stateHigh: ["molten_metal_scrap","electric","molten_plastic"],
colorOn: "#ff0000",
movable: false,
category:"machines",
darkText: true,
hardness: 1,
};
elements.electrons = {
color: "#b80606",
behavior: [
"XX|SH|XX", // shocks (adds charge)
"SH|DL%0.25|SH",
"XX|SH|XX",
],
tick: behaviors.BOUNCY,
reactions: {},
temp: 20,
category: "energy",
state: "gas",
density: 0.000003,
ignoreAir: true
}

View File

@ -1,9 +1,39 @@
/* TODO
- [x] powder heater & coller
- [x] block roomtemp
- [x] no smoke from cold fire
*/
elements.roomtemper = {
color: "#29632f",
behavior: behaviors.WALL,
tick: function(pixel) {
// from nouserthings.js <3
for (var i = 0; i < squareCoords.length; i++) {
var coord = squareCoords[i];
var x = pixel.x+coord[0];
var y = pixel.y+coord[1];
if (!isEmpty(x,y, true)) {
if(pixelMap[x][y].temp < -230) {
pixelMap[x][y].temp = (pixelMap[x][y].temp + 7)
} else if(pixelMap[x][y].temp > 270) {
pixelMap[x][y].temp = (pixelMap[x][y].temp - 7)
} else if (pixelMap[x][y].temp < 20) {
pixelMap[x][y].temp = (pixelMap[x][y].temp + 2)
} else if (pixelMap[x][y].temp > 20) {
pixelMap[x][y].temp = (pixelMap[x][y].temp - 2)
}
}
}
},
category:"machines",
state:"solid",
insulate: true,
noMix: true,
movable: false,
};
elements.cold_fire.behavior = [
"M1|M1|M1",
"M2|DL%8|M2",
"XX|M2|XX",
];
// powder
elements.powder_heater = {
category: "machines",
behavior: [
@ -37,7 +67,7 @@ elements.powder_superheater = {
insulate: true,
};
elements.powder_freeze = {
elements.powder_freezer = {
category: "machines",
behavior: [
"XX|CO:10|XX",
@ -48,36 +78,136 @@ elements.powder_freeze = {
insulate: true,
};
elements.roomtemper = {
color: "#29632f",
behavior: behaviors.WALL,
tick: function(pixel) {
for (var i = 0; i < squareCoords.length; i++) {
var coord = squareCoords[i];
var x = pixel.x+coord[0];
var y = pixel.y+coord[1];
if (!isEmpty(x,y, true)) {
if(pixelMap[x][y].temp < -230) {
pixelMap[x][y].temp = (pixelMap[x][y].temp + 7)
} else if(pixelMap[x][y].temp > 270) {
pixelMap[x][y].temp = (pixelMap[x][y].temp - 7)
} else if (pixelMap[x][y].temp < 20) {
pixelMap[x][y].temp = (pixelMap[x][y].temp + 2)
} else if (pixelMap[x][y].temp > 20) {
pixelMap[x][y].temp = (pixelMap[x][y].temp - 2)
}
}
}
},
category:"machines",
state:"solid",
insulate: true,
noMix: true,
movable: false,
},
// gas
elements.gas_heater = {
color: "#881111",
behavior: [
"M2|M1 AND HT:2|M2",
"M1 AND HT:2|XX|M1 AND HT:2",
"M2|M1 AND HT:2 | M2",
],
category: "machines",
insulate: true,
};
elements.cold_fire.behavior = [
"M1|M1|M1",
"M2|DL%8|M2",
"XX|M2|XX",
]
elements.gas_cooler = {
color: "#111188",
behavior: [
"M2|M1 AND CO:2|M2",
"M1 AND CO:2|XX|M1 AND CO:2",
"M2|M1 AND CO:2|M2",
],
category: "machines",
insulate: true,
};
elements.gas_superheater = {
color: "#dd1111",
behavior: [
"M2|M1 AND HT:10|M2",
"M1 AND HT:10|XX|M1 AND HT:10",
"M2|M1 AND HT:10|M2",
],
category: "machines",
insulate: true,
};
elements.gas_freezer = {
color: "#1111dd",
behavior: [
"M2|M1 AND CO:10|M2",
"M1 AND CO:10|XX|M1 AND CO:10",
"M2|M1 AND CO:10|M2",
],
category: "machines",
insulate: true,
};
// antipowder
elements.anti_heater = {
color: "#881111",
behavior: [
"M2|M1 AND HT:2|M2",
"HT:2|XX|HT:2",
"XX|HT:2|XX",
],
category: "special",
insulate: true,
};
elements.anti_cooler = {
color: "#111188",
behavior: [
"M2|M1 AND CO:2|M2",
"CO:2|XX|CO:2",
"XX:CO:2|XX",
],
category: "special",
insulate: true,
};
elements.anti_superheater = {
color: "#881111",
behavior: [
"M2|M1 AND HT:10|M2",
"HT:10|XX|HT:10",
"XX|HT:10|XX",
],
category: "special",
insulate: true,
};
elements.anti_freezer = {
color: "#1111dd",
behavior: [
"M2|M1 AND CO:10|M2",
"CO:10|XX|CO:10",
"XX:CO:10|XX",
],
category: "special",
insulate: true,
};
elements.heater_gas = {
color: "#881111",
behavior: [
"M2|M1 AND HT:2|M2",
"M1 AND HT:2|XX|M1 AND HT:2",
"M2|M1 aND HT:2|M2",
],
category: "special",
insulate: true,
}
elements.cooler_gas = {
color: "#111188",
behavior: [
"M2|M1 AND CO:2|M2",
"M1 AND CO:2|XX|M1 AND CO:2",
"M2|M1 A ND CO:2|M2",
],
category: "special",
insulate: true,
}
elements.superheater_gas = {
color: "#881111",
behavior: [
"M2|M1 AND H1:10|M2",
"M1 AND HT:10|XX|M1 AND HT:10",
"M2|M1 AND HT:10|M2",
],
category: "special",
insulate: true,
}
elements.freezer_gas = {
color: "#1111dd",
behavior: [
"M2|M1 AND CO:10|M2",
"M1 AND CO:10|XX|M1 AND CO:10",
"M2|M1 AND CO:10|M2",
],
category: "special",
insulate: true,
}

View File

@ -1,8 +1,8 @@
/*
Created by SquareScreamYT <@918475812884344852> and RealerRaddler <@914371295561535508>
Thanks to Alice <@697799964985786450>, nousernamefound <@316383921346707468>, Adora the Transfem <@778753696804765696> and Fioushemastor <@738828785482203189> for helping :)
Created by SquareScreamYT/sqec <@918475812884344852>
Thanks to RealerRaddler <@914371295561535508>, Alice <@697799964985786450>, nousernamefound <@316383921346707468>, Adora the Transfem <@778753696804765696>, ryan(R74n) <@101070932608561152> and Fioushemastor <@738828785482203189> for helping :)
v1.10.5
v1.12.2
you can support me at my youtube: https://youtube.com/@sqec
@ -12,6 +12,7 @@ Upcoming Features:
- white rice noodles
- matcha leaves, powder, tea
- cacao pods
- more chocolate, cocoa powder, white chocolate, cocoa butter
- agar (makes juice into jelly)
- pigs, ham and bacon
- garlic
@ -20,7 +21,6 @@ Upcoming Features:
- hot chocolate
- cows and beef
- celery
- marshmallows, normal, cooked and burnt
- kiwis
- guavas
- lychees
@ -34,6 +34,17 @@ Upcoming Features:
- peaches
- cucumbers
- eggplants
- food coloring
- crabs (they eat coconuts)
- squids
- tofu
- miso
- juice reaction with milk makes average color
- juice reaction with other juices
- jackfruit
- barbecueing meats
- bbq sauce
- mustard
Changelog (v1.0)
- added chickens
@ -98,7 +109,7 @@ Changelog (v1.1)
- added knife tool
- cuts, peels, etc. pixels
- readded potato skin and peeled potato
- changed fried potato recipe from potato to skinned potato\
- changed fried potato recipe from potato to skinned potato
- added pepper
- added cake
- made by mixing baked batter and cream
@ -342,6 +353,59 @@ Changelog (v1.10.5)
Changelog (v1.10.7)
- added mango milk
Changelog (v1.10.8)
- added onion powder
- fix carrot plant bug
- added fried rice
- added durians
- added cut durians
- added durian seed, wood, leaves and branches
Changelog (v1.11)
- unhid carrot
- unhid turnip
Changelog (v1.12)
- added whisk
- added egg white
- added hard egg white
- added whisked egg white
- added marshmallows
- added cooked marshmallows
- added burnt marshmallows
- improved soup (from nousersthings.js)
- added food coloring (color may fade)
- added eat tool
- added drink tool
Changelog (v1.12.1)
- removed coral, can still be found in ocean.js
- updated food coloring
Changelog (v1.12.2)
- updated cooked meat behavior
*/
/*
@ -351,6 +415,8 @@ elements.test = {
}
*/
console.log("Thanks for using aChefsDream.js! -sqec")
function interpolateRgb(rgb1, rgb2, ratio) {
const interpolatedRgb = {
r: Math.round(rgb1.r + (rgb2.r - rgb1.r) * ratio),
@ -402,7 +468,33 @@ elements.knife = {
canPlace: false,
desc: "Use on pixels to cut them, if possible."
}
elements.whisk = {
color: ["#a4a7b0","#a4a7b0","#a4a7b0","#bfc2c9","#e9eaf0","#bfc2c9","#a4a7b0"],
// other needed properties
tool: (pixel) => {
//store whiskInto as a variable for legibility
var whiskInto = elements[pixel.element].whiskInto;
//if theres no whiskInto, it should equal undefined, which is falsey and !undefined = true
if (!whiskInto) { return };
//if whiskInto is an array, randomly pick one of its elements
if(whiskInto instanceof Array) {whiskInto = whiskInto[Math.floor(Math.random() * whiskInto.length)] };
//change pixel into the (chosen) element
//changePixel(pixel, whiskInto)
if (shiftDown) {
if (Math.random() < 0.5) {
changePixel(pixel, whiskInto)
}
}
else if (!shiftDown) {
if (Math.random() < 0.1) {
changePixel(pixel, whiskInto)
}
}
},
category:"tools",
canPlace: false,
desc: "Use on pixels to whisk them, if possible."
}
elements.freeze_dry = {
color: "#3a65b5",
tool: function(pixel) {
@ -430,6 +522,27 @@ elements.freeze_dry = {
desc: "Use on pixels to freeze dry them, if possible."
}
elements.eat = {
color: ["#ffba79","#efff79"],
tool: function(pixel) {
if (elements[pixel.element].isFood || elements[pixel.element].category === "food" || eLists.JUICEMIXABLE.includes(pixel.element) || elements[pixel.element].id === elements.uranium.id || elements[pixel.element].id === elements.mercury.id) {
deletePixel(pixel.x, pixel.y);
}
},
category: "tools",
desc: "Eats pixels."
}
elements.drink = {
color: ["#03c6fc","#03a1fc"],
tool: function(pixel) {
if (elements[pixel.element].state === "liquid") {
deletePixel(pixel.x, pixel.y);
}
},
category: "tools",
desc: "Drinks pixels."
}
eLists.JUICEMIXABLE = ["juice"];
elements.chicken = {
@ -629,7 +742,47 @@ elements.soup = {
conduct: 0.03,
stain: -0.01,
isFood: true,
hidden: true,
//thanks to nouser
onMix: function(soup,ingredient) {
if (elements[ingredient.element].id !== elements.soup.id && elements[ingredient.element].id !== elements.broth.id) {
if (elements[ingredient.element].isFood || elements[ingredient.element].category === "food" || elements[ingredient.element].category === "liquids") {
var rgb1 = soup.color.match(/\d+/g);
var rgb2 = ingredient.color.match(/\d+/g);
// average the colors
var rgb = [
Math.round((parseInt(rgb1[0])+parseInt(rgb2[0]))/2),
Math.round((parseInt(rgb1[1])+parseInt(rgb2[1]))/2),
Math.round((parseInt(rgb1[2])+parseInt(rgb2[2]))/2)
];
if (!soup.elemlist){
soup.elemlist = [];
}
soup.decidedHigh = soup.elemlist[Math.floor(Math.random()*soup.elemlist.length)];
soup.elemlist.push(ingredient.element)
soup.stateHigh = soup.elemlist;
changePixel(ingredient, "soup");
var hex = RGBToHex(rgb);
soup.color = pixelColorPick(soup, hex);
if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); }
else {
ingredient.color = pixelColorPick(ingredient, hex);
}
}
}
},
tick: function(pixel) {
if (!pixel.decidedHigh){
pixel.decidedHigh = "steam";
}
if (pixel.temp > 100){
if (Math.random() < 0.5) {
changePixel(pixel, "steam");
}
else {
changePixel(pixel, pixel.decidedHigh)
}
}
},
}
if (!elements.broth.reactions) elements.broth.reactions = {};
@ -1628,77 +1781,6 @@ elements.salmon = {
cutInto: "raw_salmon"
}
elements.coral_stem = {
color: "#4a5e49",
behavior: [
"CR:coral_stem,coral%2|CR:coral,coral_stem,coral,coral%2|CR:coral_stem,coral%2",
"XX|XX|XX",
"XX|XX|XX",
],
tick: function(pixel) {
if (!pixel.fColor) {
pixel.fColor = "hsl(" + Math.floor(Math.random()*360) + ",100%,50%)";
}
var coordsToCheck = [
[pixel.x-1,pixel.y],
[pixel.x+1,pixel.y],
[pixel.x,pixel.y-1],
[pixel.x,pixel.y+1],
]
for (var i = 0; i < coordsToCheck.length; i++) {
var coord = coordsToCheck[i];
if (isEmpty(coord[0],coord[1])) {
createPixel("coral",coord[0],coord[1]);
pixelMap[coord[0]][coord[1]].color = pixel.fColor;
}
}
doDefaults(pixel)
},
tempHigh: 100,
stateHigh: "dead_coral",
tempLow: -30,
stateLow: "dead_coral",
category: "life",
burn: 40,
burnTime: 50,
burnInto: [,"ember","charcoal"],
hidden: true,
state: "solid",
density: 1500,
hardness: 0.15,
hidden: true,
}
elements.coral = {
color: ["#ff0000","#ff8800","#ffff00","#88ff00","#00ff00","#00ff88","#00ffff","#0088ff","#0000ff","#8800ff","#ff00ff"],
behavior: [
"XX|XX|XX",
"XX|XX|XX",
"XX|XX|XX",
],
reactions: {
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035}
},
category:"life",
tempHigh: 100,
stateHigh: "dead_plant",
tempLow: -1.66,
stateLow: "frozen_plant",
burn:65,
burnTime:60,
burnInto: "dead_plant",
breakInto: "dead_plant",
state: "solid",
density: 1050,
hidden: true,
properties:{
"colored": false
}
}
elements.raw_salmon = {
color: ["#FD7E19", "#FE842F", "#FD8F45"],
behavior: behaviors.STURDYPOWDER,
@ -2645,46 +2727,52 @@ elements.lemon_seed = {
elements.carrot_seed = {
color: "#b08d35",
tick: function(pixel) {
tick: function (pixel) {
if (isEmpty(pixel.x, pixel.y + 1)) {
movePixel(pixel, pixel.x, pixel.y + 1);
}
else {
if (Math.random() < 0.1 && pixel.age > 100 && pixel.temp < 100 && pixel.leafgrown == true && pixel.growthpixel == 0) {
if (!outOfBounds(pixel.x,pixel.y+1)) {
var randomNumber1 = Math.round(Math.random())
pixel.growthpixel = pixel.growthpixel+randomNumber1
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
if (!outOfBounds(pixel.x, pixel.y + 1)) {
var randomNumber1 = Math.round(Math.random());
pixel.growthpixel = pixel.growthpixel + randomNumber1;
var dirtPixel = pixelMap[pixel.x][pixel.y + 1];
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
deletePixel(pixel.x,pixel.y+1);
movePixel(pixel,pixel.x,pixel.y+1);
createPixel("carrot_leaves",pixel.x,pixel.y-1);
deletePixel(pixel.x, pixel.y + 1);
movePixel(pixel, pixel.x, pixel.y + 1);
createPixel("carrot_leaves", pixel.x, pixel.y - 1);
pixel.growthpixel++;
}
}
}
if (Math.random() < 0.1 && pixel.age > 100 && pixel.temp < 100 && pixel.leafgrown == true && pixel.growthpixel > 0 && pixel.growthpixel < 4) {
if (!outOfBounds(pixel.x,pixel.y+1)) {
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
if (!outOfBounds(pixel.x, pixel.y + 1)) {
var dirtPixel = pixelMap[pixel.x][pixel.y + 1];
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
deletePixel(pixel.x,pixel.y+1);
movePixel(pixel,pixel.x,pixel.y+1);
createPixel("carrot",pixel.x,pixel.y-1);
deletePixel(pixel.x, pixel.y + 1);
movePixel(pixel, pixel.x, pixel.y + 1);
createPixel("carrot", pixel.x, pixel.y - 1);
pixel.growthpixel++;
}
}
}
if (!isEmpty(pixel.x,pixel.y+1) && Math.random() > 0.95 && isEmpty(pixel.x-1,pixel.y-1) && isEmpty(pixel.x+1,pixel.y-1) && pixel.leafgrown == false) {
if (!isEmpty(pixel.x, pixel.y + 1) && Math.random() > 0.95 && isEmpty(pixel.x - 1, pixel.y - 1) && isEmpty(pixel.x + 1, pixel.y - 1) && pixel.leafgrown == false) {
var dirtPixel = pixelMap[pixel.x][pixel.y + 1];
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
createPixel("carrot_leaves",pixel.x-1,pixel.y-1);
createPixel("carrot_leaves",pixel.x+1,pixel.y-1);
pixel.leafgrown++
createPixel("carrot_leaves", pixel.x - 1, pixel.y - 1);
createPixel("carrot_leaves", pixel.x + 1, pixel.y - 1);
pixel.leafgrown = true;
}
}
else if (pixel.age > 150 && pixel.growthpixel == 4 && Math.random() < 0.1) {
changePixel(pixel,"carrot");
changePixel(pixel, "carrot");
}
pixel.age++;
}
doDefaults(pixel);
},
properties: {
"age":0,
"age": 0,
"growthpixel": 0,
"leafgrown": false
},
@ -2705,6 +2793,7 @@ elements.carrot_seed = {
"XX|M1|XX",
],
};
elements.carrot_leaves = {
color: ["#61cc3d","#58c234"],
behavior: behaviors.WALL,
@ -2740,7 +2829,6 @@ elements.carrot = {
breakInto: "carrot_juice",
state: "solid",
density: 1050,
hidden: true,
freezeDryInto: "freeze_dried_fruits",
freezeDryIntoColor: "#ba8125",
}
@ -2909,7 +2997,6 @@ elements.turnip = {
breakInto: "turnip_juice",
state: "solid",
density: 1050,
hidden: true,
freezeDryInto: "freeze_dried_fruits",
freezeDryIntoColor: "#79097d",
}
@ -4645,6 +4732,11 @@ elements.mango_juice = {
}
}
},
reactions: {
"milk": { elem1: "fruit_milk", elem2: "fruit_milk", chance: 0.35, color1:"#fada70", color2:"#fada70"},
"coconut_milk": { elem1: "fruit_milk", elem2: "fruit_milk", chance: 0.35, color1:"#fada70", color2:"#fada70"},
"nut_milk": { elem1: "fruit_milk", elem2: "fruit_milk", chance: 0.35, color1:"#fada70", color2:"#fada70"}
},
behavior: behaviors.LIQUID,
category: "liquids",
tempHigh: 100,
@ -5101,7 +5193,8 @@ elements.onion = {
state: "solid",
density: 1050,
cutInto: "cut_onion",
cutIntoEmit: "stench",
breakInto:"onion_powder",
//cutIntoEmit: "stench",
}
elements.cut_onion = {
color: "#dcc5ed",
@ -5114,6 +5207,7 @@ elements.cut_onion = {
burnInto: "steam",
state: "solid",
density: 1050,
breakInto:"onion_powder",
hidden: true,
reactions:{ "nut_oil": {elem1:"fried_onion", tempMin: 70, chance:10}}
}
@ -5183,6 +5277,28 @@ elements.onion_seed = {
"XX|M1|XX",
],
}
elements.onion_powder = {
color: "#e6d8b8",
reactions: {
"stench": { elem2:null, chance:0.25 },
"steam": { elem2:"fragrance", chance:0.1 },
"flea": { elem2:null, chance:0.01 },
"termite": { elem2:null, chance:0.01 },
"fly": { elem2:null, chance:0.01 },
"ant": { elem2:null, chance:0.01 },
"stink_bug": { elem2:null, chance:0.01 },
},
behavior: behaviors.POWDER,
tempHigh: 300,
stateHigh: ["fire","smoke","smoke","smoke","ash"],
burn:10,
burnTime:300,
burnInto: ["fire","smoke","smoke","smoke","smoke","smoke","smoke","fragrance"],
category:"food",
state: "solid",
density: 1400,
isFood: true,
}
elements.unhusked_rice = {
color: ["#c99a42","#b08638","#deb15d"],
behavior: [
@ -5223,7 +5339,8 @@ elements.rice = {
isFood: true,
density: 1050,
reactions:{
"water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70}
"water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70},
"nut_oil":{elem1:"fried_rice",elem2:null,chance:3,tempMin:60}
}
}
elements.cooked_rice = {
@ -5233,13 +5350,12 @@ elements.cooked_rice = {
tempHigh: 200,
stateHigh: "burnt_rice",
burn:65,
burnTime:60,
burnInto: "dead_plant",
breakInto: "rice_flour",
state: "solid",
isFood: true,
density: 1050,reactions:{
"water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70}
"water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70},
"nut_oil":{elem1:"fried_rice",elem2:null,chance:3,tempMin:60}
},
hidden:true
}
@ -5251,12 +5367,26 @@ elements.porridge = {
stateHigh: "steam",
viscosity: 999,
burn:65,
burnTime:60,
burnInto: "dead_plant",
state: "solid",
isFood: true,
density: 1050,
}
elements.fried_rice = {
color: "#e8dda0",
behavior: behaviors.POWDER,
category:"food",
tempHigh: 200,
stateHigh: "burnt_rice",
burn:65,
burnTime:60,
state: "solid",
isFood: true,
density: 1050,reactions:{
"salt":{color1:"#ede5b9",elem2:null,chance:3},
"monosodium_glutamate":{color1:"#ede5b9",elem2:null,chance:3}
},
hidden:true
}
elements.burnt_rice = {
color: "#262217",
behavior: behaviors.POWDER,
@ -5265,7 +5395,6 @@ elements.burnt_rice = {
stateHigh: "ash",
burn:65,
burnTime:60,
burnInto: "dead_plant",
state: "solid",
isFood: true,
density: 1050,
@ -6696,3 +6825,279 @@ elements.hot_sauce = {
isFood: true
}
elements.head.reactions.hot_sauce = {elem2:["smoke","fire",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null], chance:3}
elements.durian_wood = {
color: "#5e4b23",
behavior: behaviors.WALL,
tempHigh: 400,
stateHigh: ["ember","charcoal","fire","fire","fire"],
category: "solids",
burn: 5,
burnTime: 300,
burnInto: ["ember","charcoal","fire"],
state: "solid",
hardness: 0.15,
breakInto: "sawdust",
breakIntoColor: ["#dba66e","#cc8a64"],
hidden: true
}
elements.durian_branch = {
color: "#5e4b23",
behavior: [
"CR:durian_leaves,durian_branch%2|CR:durian_leaves,durian_branch%2|CR:durian_leaves,durian_branch%2",
"XX|XX|XX",
"XX|XX|XX",
],
tempHigh: 100,
stateHigh: "durian_wood",
tempLow: -30,
stateLow: "durian_wood",
category: "life",
burn: 40,
burnTime: 50,
burnInto: ["sap","ember","charcoal"],
hidden: true,
state: "solid",
density: 1500,
hardness: 0.15,
breakInto: ["sap","sawdust"],
}
elements.durian_leaves = {
color: ["#326b25","#2e751e"],
behavior: [
"XX|XX|XX",
"XX|XX|XX",
"XX|CR:durian%0.1|XX",
],
reactions: {
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }
},
category:"life",
tempHigh: 100,
stateHigh: "dead_plant",
tempLow: -1.66,
stateLow: "frozen_plant",
burn:65,
burnTime:60,
burnInto: "dead_plant",
breakInto: "dead_plant",
state: "solid",
density: 1050,
hidden: true
}
elements.durian = {
color: ["#578524","#5b8f1f"],
behavior: behaviors.POWDER,
category:"food",
tempHigh: 100,
stateHigh: "dead_plant",
burn:65,
burnTime:60,
cutInto: "cut_durian",
state: "solid",
density: 1050,
}
elements.cut_durian = {
color: ["#e3e04b","#d1cf36"],
behavior: behaviors.STURDYPOWDER,
category:"food",
tempHigh: 100,
stateHigh: ["sugar","steam"],
burn:65,
burnTime:60,
state: "solid",
density: 1050,
hidden: true,
freezeDryInto: "freeze_dried_fruits",
freezeDryIntoColor: "#a19f3b",
}
elements.durian_seed = {
color: "#a17d3b",
tick: function(pixel) {
if (isEmpty(pixel.x,pixel.y+1)) {
movePixel(pixel,pixel.x,pixel.y+1);
}
else {
if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) {
if (!outOfBounds(pixel.x,pixel.y+1)) {
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
changePixel(dirtPixel,"root");
}
}
if (isEmpty(pixel.x,pixel.y-1)) {
movePixel(pixel,pixel.x,pixel.y-1);
createPixel(Math.random() > 0.5 ? "durian_wood" : "durian_branch",pixel.x,pixel.y+1);
}
}
else if (pixel.age > 1000) {
changePixel(pixel,"durian_wood");
}
pixel.age++;
}
doDefaults(pixel);
},
properties: {
"age":0
},
tempHigh: 100,
stateHigh: "dead_plant",
tempLow: -2,
stateLow: "frozen_plant",
burn: 65,
burnTime: 15,
category: "life",
state: "solid",
density: 1500,
cooldown: defaultCooldown,
seed: true,
behavior: [
"XX|XX|XX",
"XX|FX%10|XX",
"XX|M1|XX",
],
};
elements.egg_white = {
color: "#edece8",
behavior: behaviors.LIQUID,
tempHigh: 100,
stateHigh: "hard_egg_white",
tempLow: 0,
stateLow: "hard_egg_white",
category: "food",
state: "liquid",
density: 1027.5,
viscosity: 270,
isFood: true,
whiskInto: "whisked_egg_white",
}
elements.hard_egg_white = {
color: "#dedddc",
behavior: behaviors.STURDYPOWDER,
tempHigh: 400,
stateHigh: "smoke",
category: "food",
hidden: true,
isFood: true,
state: "solid",
density: 1031
}
elements.milk.whiskInto = "cream";
elements.cream.whiskInto = "whipped_cream";
elements.egg.breakInto = ["egg_white","egg_white","yolk"]
elements.whisked_egg_white ={
color: "#fefefe",
behavior: behaviors.LIQUID,
reactions: {
"corn_syrup": { elem1: "marshmallow", elem2: null, chance: 2 },
"sugar": { elem1: "marshmallow", elem2: null, chance: 2 },
},
viscosity: 1.5,
tempHigh: 1000,
stateHigh: ["smoke","steam"],
category: "food",
hidden: true,
isFood: true,
state: "liquid",
density: 959.97,
}
elements.marshmallow = {
color: "#fafafa",
behavior: [
"XX|XX|XX",
"ST:wood|XX|ST:wood",
"XX|M1|XX",
],
viscosity: 1.5,
tempHigh: 70,
stateHigh: "cooked_marshmallow",
category: "food",
isFood: true,
state: "solid",
density: 959.97,
}
elements.cooked_marshmallow = {
color: "#f0dbb6",
behavior: [
"XX|XX|XX",
"ST:wood|XX|ST:wood",
"XX|M1|XX",
],
viscosity: 1.5,
tempHigh: 150,
stateHigh: "burnt_marshmallow",
category: "food",
isFood: true,
state: "solid",
density: 959.97,
hidden:true
}
elements.burnt_marshmallow = {
color: "#29231a",
behavior: [
"XX|XX|XX",
"ST:wood|XX|ST:wood",
"XX|M1|XX",
],
viscosity: 1.5,
tempHigh: 1000,
stateHigh: ["steam","caramel"],
category: "food",
isFood: true,
state: "solid",
density: 959.97,
hidden:true
}
eLists.FOODCOLORINGIGNORE = ["glass", "porcelain", "wall","iron","steel","copper","silver","aluminum","tungsten","gold","plastic"];
elements.food_coloring = {
color: ["#ff0000", "#ff8800", "#ffff00", "#00ff00", "#00ffff", "#0000ff", "#ff00ff"],
behavior: behaviors.LIQUID,
customColor: true,
stain: 0.5,
tempHigh: 100,
stateHigh: "steam",
category: "food",
state: "liquid",
density: 998,
stainSelf: true,
ignore: ["glass", "porcelain", "wall","iron","steel","copper","silver","aluminum","tungsten","gold","plastic"],
desc: "coloring for food. color may fade when diluting with water.",
tick: function (pixel) {
for (var i = 0; i < squareCoords.length; i++) {
var coord = squareCoords[i];
var x = pixel.x + coord[0];
var y = pixel.y + coord[1];
if (!isEmpty(x, y, true)) {
if (pixelMap[x][y].element === "water" || pixelMap[x][y].element === "salt_water" || pixelMap[x][y].element === "sugar_water" || pixelMap[x][y].element === "seltzer" || pixelMap[x][y].element === "dirty_water" || pixelMap[x][y].element === "pool_water") {
changePixel(pixelMap[x][y], "food_coloring");
let newrgb = interpolateRgb(getRGB(pixel.color), getRGB(pixelMap[x][y].color), 0.5);
pixel.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
pixelMap[x][y].color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
}
else {
if (!outOfBounds(pixelMap[x][y])) {
if (!eLists.FOODCOLORINGIGNORE.includes(pixelMap[x][y].element) && pixelMap[x][y].element !== "glass" && pixelMap[x][y].element !== "porcelain" && pixelMap[x][y].element !== "wall" && pixelMap[x][y].element !== "plastic") {
let newrgb2 = interpolateRgb(getRGB(pixel.color), getRGB(pixelMap[x][y].color), 0.9);
pixelMap[x][y].color = `rgb(${parseInt(newrgb2.r)},${parseInt(newrgb2.g)},${parseInt(newrgb2.b)})`;
if (Math.random() < 0.002) {
deletePixel(pixel.x,pixel.y)
}
}
}
}
}
}
},
onSelect: function () {
logMessage("Tip: You can spread food coloring using water.");
},
}
elements.cooked_meat.behavior = behaviors.SUPPORT;

View File

@ -1,5 +1,5 @@
var modName = "mods/../a_mod_by_alice.js" //can't do "alice's mod" because the apostrophe will fuck up code, be too confusing, or both
var dependencies = ["mods/libhooktick.js", "mods/chem.js", "mods/minecraft.js", "mods/Neutronium Mod.js", "mods/CrashTestDummy.js", "mods/fey_and_more.js", "mods/velocity.js", "mods/ketchup_mod.js", "mods/moretools.js", "mods/aChefsDream.js", "mods/nousersthings.js"]; //thanks to mollthecoder, PlanetN9ne, StellarX20 (3), MelecieDiancie, R74n, Nubo318, Sightnado, sqeč, and NoUsernameFound
var dependencies = ["mods/libhooktick.js", "mods/chem.js", "mods/minecraft.js", "mods/Neutronium Mod.js", "mods/CrashTestDummy.js", "mods/fey_and_more.js", "mods/velocity.js", "mods/ketchup_mod.js", "mods/moretools.js", "mods/aChefsDream.js", "mods/nousersthings.js"]; //thanks to mollthecoder, PlanetN9ne, StellarX20 (3), MelecieDiancie, R74n, Nubo318, Sightnado, SquareScreamYT, and NoUsernameFound
var dependencyExistence = dependencies.map(x => enabledMods.includes(x));
var allDependenciesExist = dependencyExistence.reduce(function(a,b) { return a && b });
//console.log(allDependenciesExist);

164
mods/blocks.js Normal file
View File

@ -0,0 +1,164 @@
elements.zogron = {
color: ["#ebde34", "#34dbeb", "#ebe834"],
colorPattern: [
"00055400",
"01111120",
"02111210",
"41152110",
"01121110",
"01211410",
"02151113",
"00000000",
],
colorKey: {
"0": "#ebde34",
"1": "#dbeb34",
"2": "#ebe834",
"3": "#3d34eb",
"4": "#34dbeb",
"5": "#34ebb7",
},
behavior: behaviors.WALL,
category: "Blocks",
}
elements.roro = {
color: ["#000000", "#F00000"],
colorPattern: [
"10000001",
"01111000",
"00111100",
"00011110",
"00001111",
"00011110",
"00111100",
"01111000",
],
colorKey: {
"0": "#000000",
"1": "#F00000"
},
behavior: behaviors.WALL,
category: "Blocks",
}
elements.foldtos = {
color: ["#00FF00", "#0000FF"],
colorPattern: [
"00100010",
"00100010",
"01111110",
"00100010",
"00100010",
"00100010",
"01111110",
"00100010"
],
colorKey: {
"0": "#00FF00",
"1": "#0000FF"
},
behavior: behaviors.WALL,
category: "Blocks"
};
elements.toyus = {
color: ["#FFFF00", "#00FF00", "#FFA500"],
colorPattern: [
"02101210",
"01210102",
"02101210",
"00120210",
"01201012",
"01021021",
"02101210",
"00120210"
],
colorKey: {
"0": "#FFFF00",
"1": "#00FF00",
"2": "#FFA500"
},
behavior: behaviors.WALL,
category: "Blocks"
};
elements.slingus = {
color: ["#800080", "#0000FF", "#ADD8E6", "#FF69B4"],
colorPattern: [
"01233210",
"12310213",
"23012301",
"30121230",
"12302312",
"23101203",
"30120123",
"01233210"
],
colorKey: {
"0": "#800080",
"1": "#0000FF",
"2": "#ADD8E6",
"3": "#FF69B4"
},
behavior: behaviors.WALL,
category: "Blocks"
};
elements.slingus_maximus = {
color: ["#800080", "#0000FF", "#ADD8E6", "#FF69B4"],
colorPattern: [
"11111223",
"11112233",
"11122233",
"11222233",
"12222333",
"22223333",
"22233333",
"22333333"
],
colorKey: {
"0": "#800080",
"1": "#0000FF",
"2": "#ADD8E6",
"3": "#FF69B4"
},
behavior: behaviors.WALL,
category: "Blocks"
};
elements.slinkusy = {
color: ["#4B0082", "#0000FF", "#6495ED", "#FF1493"],
colorPattern: [
"01223201",
"01223102",
"01022301",
"01022301",
"01223102",
"01223201",
"01223201",
"01223102"
],
colorKey: {
"0": "#4B0082",
"1": "#0000FF",
"2": "#6495ED",
"3": "#FF1493"
},
behavior: behaviors.WALL,
category: "Blocks"
};
worldgentypes.Mixy_blocks1 = {
layers: [
[0.75, "slinkusy"],
[0.15, "toyus"],
[0.05, "foldtos"],
[0.0, "roro"],
],
decor: [
["zogron", 0.04, 20],
["slingus_maximus", 0.25, 30],
],
baseHeight: 0.25
}

142
mods/drugs.js Normal file
View File

@ -0,0 +1,142 @@
elements.methamphetamine = {
category: "powders",
color: ["#b6ccd8", "#c5cfd6", "#cbd5db", "#6da5e0"],
state: "solid",
behavior: behaviors.POWDER,
temp: 20,
tempHigh: 1700,
stateHigh: "molten_methamphetamine",
reactions: {
"water": {elem1: null, elem2: "dirty_water"},
"cell": {elem1: "methamphetamine", elem2: "plague", chance: 0.001},
"plant": {elem1: "methamphetamine", elem2: "dead_plant", chance: 0.005},
},
};
elements.molten_methamphetamine = {
category: "states",
color: ["#fb7300", "#f93100", "#e05a1d", "#d65611"],
state: "liquid",
behavior: behaviors.RADMOLTEN,
tempLow: 1700,
stateLow: "methamphetamine",
};
elements.morphine = {
category: "powders",
color: "#c4dcf2",
state: "solid",
behavior: behaviors.POWDER,
tempHigh: 10000,
stateHigh: "n_explosion",
reactions: {
"head": {elem1: "n_explosion", elem2: "n_explosion", chance: 0.00008},
"body": {elem1: "n_explosion", elem2: "n_explosion", chance: 0.00008},
},
};
elements.cigarette = {
category: "solids",
color: ["#754531", "#e1e1dd"],
state: "solid",
behavior: [
"XX|CR:smoke%1 AND CR:carbon_dioxide%0.5|XX",
"CR:smoke%1 AND CR:carbon_dioxide%0.5|XX|CR:smoke%1 AND CR:carbon_dioxide%0.5",
"XX|CR:smoke%1 AND CR:carbon_dioxide%0.5|XX",
],
tempHigh: 233,
stateHigh: ["ash", "fire"],
breakInto: ["dust", "ash", "ash", "ash", "charcoal"],
};
elements.cannabis = {
category: "powders",
state: "solid",
tempHigh: 100,
stateHigh: "dead_plant",
burn: 15,
burnTime: 60,
burnInto: "dead_plant",
breakInto: "dead_plant",
behavior: behaviors.POWDER,
color: ["#2C7415", "#1D5F00", "#B2DC29", "#B2DC29", "#2C7415"],
reactions: {
"head": { elem1: null, elem2: "fly" }
},
}
elements.cannabis_seed = {
category: "life",
state: "solid",
tempHigh: 120,
stateHigh: "dead_plant",
breakInto: "cannabis",
behavior: [
"CR:cannabis_branch%2|CR:cannabis_branch%2|CR:cannabis_branch%2",
"XX|XX|XX",
"XX|M1|XX",
],
color: "#57272C",
}
elements.cannabis_branch = {
category: "life",
hidden: true,
state: "solid",
tempHigh: 120,
stateHigh: "dead_plant",
breakInto: "dead_plant",
behavior: [
"CR:cannabis_branch%0.7|CR:cannabis_branch%3|CR:cannabis_branch%0.7",
"CR:cannabis%4|XX|CR:cannabis%4",
"CR:cannabis%4|XX|CR:cannabis%4",
],
color: "#57272C",
}
elements.weed = {
category: "powders",
behavior: behaviors.POWDER,
state: "solid",
tempHigh: 150,
stateHigh: "dead_plant",
breakInto: "dead_plant",
burn: 15,
burnTime: 60,
burnInto: "dead_plant",
color: ["#71B441", "#416201", "#426D06", "#91CA6F"]
}
elements.weed_seed = {
category: "life",
state: "solid",
tempHigh: 150,
stateHigh: "dead_plant",
breakInto: "weed",
burn: 10,
burnTime: 60,
burnInto: "dead_plant",
color: "#5c4532",
behavior: [
"CR:weed_branch%0.2|CR:weed_branch%0.2|CR:weed_branch%0.2",
"XX|XX|XX",
"XX|M1|XX",
],
}
elements.weed_branch = {
category: "life",
hidden: true,
state: "solid",
tempHigh: 150,
stateHigh: "dead_plant",
breakInto: "weed",
burn: 10,
burnTime: 60,
color: "#5c4532",
behavior: [
"CR:weed_branch%0.7|CR:weed_branch%3|CR:weed_branch%0.7",
"CR:cannabis%4|XX|CR:cannabis%4",
"CR:cannabis%4|XX|CR:cannabis%4"
],
}

View File

@ -15,5 +15,22 @@ elements.element_eraser = {
},
category: "tools",
excludeRandom: true,
desc: "Input a element to erase only that element."
desc: "Use on pixels to delete specified element."
}
let finalEraseElement2 = null;
elements.exclusive_element_eraser = {
color: "#eeeeee",
onSelect: function() {
var answer = prompt("Please input the element you do not wish to delete. It will not work if you enter multiple element types while paused.",(finalEraseElement2||undefined));
if (!answer2) { return }
finalEraseElement2 = mostSimilarElement(answer2);
},
tool: function(pixel) {
if (pixel.element != finalEraseElement2) {
deletePixel(pixel.x,pixel.y)
}
},
category: "tools",
excludeRandom: true,
desc: "Use on pixels to delete any element except the specified element."
}

158
mods/extrasaveslots.js Normal file
View File

@ -0,0 +1,158 @@
//extrasaveslots
function showSaves() {
var savesParent = document.getElementById("savesParent");
var saveSlotList = document.getElementById("saveSlotList");
saveSlotList.innerHTML = "";
// loop 12 times, checking if local storage SandboxelsSaves/x exists
// <span class="saveSlot">Slot 1 <span disabled="true">Clear</span> <span disabled="true">Load</span> <span onclick="saveSlot(2)">Save</span></span>
// <span class="saveSlot">Unnamed <span onclick="clearSlot(2)">Clear</span> <span onclick="loadSlot(2)">Load</span> <span onclick="saveSlot(2)">Save</span></span>
for (var i = 1; i < 101; i++) {
var save = localStorage.getItem("SandboxelsSaves/"+i);
var name = "Slot "+i;
if (save) {
name = JSON.parse(save).meta.name || "Unnamed";
name = name.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
// truncate
if (name.length > 16) { name = name.substring(0,16)+"..."; }
saveSlotList.innerHTML += "<span id='saveSlot"+i+"' data-name='"+name+"' class='saveSlot'><span class='saveSlotName'>"+name+"</span> <span onclick='clearSlot("+i+")' class='saveOption'>Clear</span> <span onclick='loadSlot("+i+")' class='saveOption'>Load</span> <span onclick='saveSlot("+i+")' class='saveOption'>Save</span></span>";
}
else {
saveSlotList.innerHTML += "<span id='saveSlot"+i+"' data-name='"+name+"' class='saveSlot'><span class='saveSlotName'>"+name+"</span> <span disabled='true' class='saveOption'>Clear</span> <span disabled='true' class='saveOption'>Load</span> <span onclick='saveSlot("+i+")' class='saveOption'>Save</span></span>";
}
}
savesParent.style.display = "block";
showingMenu = "saves";
}
function saveSlot(i) {
savingState = {slot:i};
document.getElementById("saveName").value = document.getElementById("saveSlot"+i).getAttribute("data-name") || "Slot "+i;
showSavePrompt();
}
function loadSlot(i) {
var save = localStorage.getItem("SandboxelsSaves/"+i);
if (save) {
loadSave(JSON.parse(save));
closeMenu();
}
}
function clearSlot(i) {
if (!confirm("Are you sure you want to erase this save slot?")) { return }
localStorage.removeItem("SandboxelsSaves/"+i);
showSaves();
}
function confirmSave() {
if (!savingState) { return }
var saveName = document.getElementById("saveName").value || "Unnamed";
var saveTemp = document.getElementById("saveTemp").getAttribute("state") === "1";
var saveColors = document.getElementById("saveColors").getAttribute("state") === "1";
var saveMods = document.getElementById("saveMods").getAttribute("state") === "1";
var saveSettings = document.getElementById("saveSettings").getAttribute("state") === "1";
var saveRaw = document.getElementById("saveRaw").getAttribute("state") === "1";
var saveAuthor = document.getElementById("saveAuthor").value || "";
if (saveAuthor && !currentSaveData) {
setSetting("authorName",saveAuthor)
}
var saveDesc = document.getElementById("saveDesc").value || "";
var config = {name:saveName,temp:saveTemp,mods:saveMods,settings:saveSettings,raw:saveRaw,keep:[],author:saveAuthor,desc:saveDesc};
if (saveTemp) { config.keep.push("temp") }
if (saveColors) { config.keep.push("color") }
if (savingState.slot) {
// save stringified generateSave() to localStorage SandboxelsSaves/i
localStorage.setItem("SandboxelsSaves/"+savingState.slot, JSON.stringify(generateSave(undefined,config)));
closeMenu();
showSaves();
}
else {
// save to <name>.sbxls
var save = generateSave(undefined,config);
var blob = new Blob([JSON.stringify(save)], {type: "application/json"});
var url = URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = url;
a.download = saveName+".sbxls";
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
closeMenu();
}
}
function saveToFile() {
savingState = {slot:null};
document.getElementById("saveName").value = "";
document.getElementById("saveAuthor").value = "";
document.getElementById("saveDesc").value = "";
showSavePrompt();
}
function loadFromFile() {
var input = document.createElement("input");
input.type = "file";
// input.accept = ".sbxls,.json,.txt,text/*,application/json";
input.addEventListener("change", function(e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.readAsText(file,"UTF-8");
reader.onload = readerEvent => {
var content = readerEvent.target.result;
loadSave(JSON.parse(content));
}
closeMenu();
});
input.click();
}
function showSavePrompt() {
closeMenu();
var savePromptParent = document.getElementById("savePromptParent");
var saveWarning = document.getElementById("saveWarning");
if (currentSaveData) {
document.getElementById("saveName").value = currentSaveData.name || "";
document.getElementById("saveAuthor").value = currentSaveData.author || "";
document.getElementById("saveDesc").value = currentSaveData.desc || "";
}
else if (settings.authorName) {
document.getElementById("saveAuthor").value = settings.authorName;
}
saveWarning.innerHTML = "<br>"
var menuTitle = document.querySelector("#savePromptMenu .menuTitle");
if (savingState.slot === null) {
menuTitle.innerHTML = "Save to File";
}
else {
menuTitle.innerHTML = "Save to Slot";
if (localStorage["SandboxelsSaves/"+savingState.slot]) {
saveWarning.innerHTML += "<br>This will overwrite the save in slot "+savingState.slot+"!";
}
}
var saveMods = document.getElementById("saveMods");
if (enabledMods.length !== 0) {
saveMods.style.display = "inline-block";
saveWarning.innerHTML += "<br>Mods might not be necessary to include, and may annoy the user!";
}
else { saveMods.style.display = "none"; }
savePromptParent.style.display = "block";
showingMenu = "savePrompt";
document.getElementById("saveName").focus();
}
function showSettings() {
var settingsParent = document.getElementById("settingsParent");
settingsParent.style.display = "block";
showingMenu = "settings";
}
function setSetting(setting,value) {
settings[setting] = value;
saveSettings();
}
function toggleInput(input,setting,updateText) {
if (input.getAttribute("state") === "0") {
input.setAttribute("state","1");
if (updateText !== false) { input.value = "ON"; }
if (setting) { setSetting(setting,1); }
}
else {
input.setAttribute("state","0");
if (updateText !== false) { input.value = "OFF"; }
if (setting) { setSetting(setting,0); }
}
}

299
mods/fools+.js Normal file
View File

@ -0,0 +1,299 @@
// all the credits go to R74n
// made worse by sqec
// i'm sorry, here's some poorly made ascii art bleach for your eyes
// tbh most of it was copied from index.html or fools.js
// moss inspired
// code messy don't read
/*
_____
| |
|--------.
| \
| |\ \
| | \ \
| \ \ \
| \_| .
| |
| BLEACH |
| 12floz |
| |
|_____________|
*/
behaviors.CRASH = [
"XX|XX|XX",
"XX|EX:100000>flash|XX",
"XX|XX|XX",
]
fonts = ["Webdings","Comic Sans MS","Times New Roman","Monospace","Wingdings","Courier New",
"Papyrus","Impact","Curlz MT","Jokerman","Segoe Script","Bradley Hand ITC"]
funnysavenames = ["identity theft","the saveinator","Save 95","nuclear reactor","stomach man",
"calculator","potato chip","bread bowl","more gun","error 704 save not found","fortnite dance",
"foghorn","Unknown","mixup save","balls 🏀","sbave","the moss field","uhhhh",
"Grumman f-14 tomcat fighter jet","mcdonnell douglas f-15 eagle fighter jet",
"untextured unrigged blender brick","rebar","the giant enemy spider",
"statue of ryan","🟩","🟥","the temple of ryan","🌳 🌳 🌳","R74n ripoff",
"the powder toy","tpt save","save from tpt","sand:box save","sandspiel save",
"cool plane","big mac with uranium","nyc","mountain thing","Slot NaN","Slot 1",
"Slot 1.5","Slot pi","Slot golden ratio","Slot Infinity","Computer thing","Pro Kitchen",
"Airport","Coconut Plantation","Eiffel Tower","car"]
allproperties = {}
skipproperties = ["color", "colorOn", "forceAutoGen", "name", "category", "colorObject", "hidden", "tempHigh", "tempLow", "stateHigh", "stateLow"]
goodproperties = ["behavior","tick"]
elements.molten_rad_glass.color = "#ffffff"
for (element in elements) {
var elementdata = elements[element]
if (elementdata.category === "tools") { continue }
for (property in elementdata) {
//if (skipproperties.indexOf(property) !== -1) { continue }
// only use properties that are in goodproperties
if (goodproperties.indexOf(property) === -1) { continue }
if (!allproperties[property]) {
allproperties[property] = []
}
allproperties[property].push(elementdata[property])
}
}
// delete all properties from elements except skipproperties
for (element in elements) {
var elementdata = elements[element]
if (elementdata.category === "tools") { continue }
for (property in elementdata) {
//if (skipproperties.indexOf(property) === -1) {
// only delete properties that are in goodproperties
if (goodproperties.indexOf(property) !== -1) {
delete elementdata[property]
}
}
}
// make a randomized shuffled list of all elements
var elementlist = Object.keys(elements)
elementlist.sort(function() { return 0.5 - Math.random() })
// randomly assign properties to elements
for (property in allproperties) {
// list of values for this property
var propertyvalues = allproperties[property]
// loop through elements, assigning values until we run out
for (var i = 0; i < elementlist.length; i++) {
if (i >= propertyvalues.length) { break }
var element = elementlist[i]
var elementdata = elements[element]
elementdata[property] = propertyvalues[i]
}
// reshuffle the list of elements
elementlist.sort(function() { return 0.5 - Math.random() })
}
// choose random values for properties
for (element in elements) {
elementdata = elements[element]
if (elementdata.category === "tools") { continue }
// set tempHigh to a random value between 0 and 10000
elementdata.tempHigh = Math.floor(Math.random() * 10000)
// set tempLow to a random value between -273 and 0
elementdata.tempLow = Math.floor(Math.random() * 273) - 273
if (elementdata.stateHigh) {
elementdata.stateHigh = elementlist[Math.floor(Math.random() * elementlist.length)]
}
if (elementdata.stateLow) {
elementdata.stateLow = elementlist[Math.floor(Math.random() * elementlist.length)]
}
if (elementdata.reactions) {
for (reactant in elementdata.reactions) {
elementdata.reactions[reactant].elem1 = elementlist[Math.floor(Math.random() * elementlist.length)]
elementdata.reactions[reactant].elem2 = elementlist[Math.floor(Math.random() * elementlist.length)]
elementdata.reactions[elementlist[Math.floor(Math.random() * elementlist.length)]] = elementdata.reactions[reactant]
delete elementdata.reactions[reactant]
}
}
}
// Generate random hex color codes
function getRandomHexColor() {
let hex = '#';
for (let i = 0; i < 6; i++) {
hex += Math.floor(Math.random() * 16).toString(16);
}
return hex;
}
//random word generator
function generateRandomWord() {
let word = '';
const letters = 'abcdefghijklmnopqrstuvwxyz';
// Generate random word
for(let i = 0; i < Math.floor(Math.random() * 20); i++) {
word += letters.charAt(Math.floor(Math.random() * letters.length));
}
// Randomly add spaces
for(let i = 0; i < word.length; i++) {
if(Math.random() < 0.2) {
word = word.slice(0, i) + ' ' + word.slice(i);
}
}
return word;
}
// Set random colors
for (let element in elements) {
let elementData = elements[element];
if (Math.random() < 0.3) {
elementData.color = [getRandomHexColor(),getRandomHexColor(),getRandomHexColor()];
}
else if (Math.random() < 0.5) {
elementData.color = [getRandomHexColor(),getRandomHexColor()];
}
else if (Math.random() < 0.8) {
elementData.color = getRandomHexColor();
}
else {
elementData.color = [getRandomHexColor(),getRandomHexColor(),getRandomHexColor(),getRandomHexColor(),getRandomHexColor()];
}
}
// Set random category
for (let element in elements) {
let elementData = elements[element];
if (elementData.category === "tools") { continue }
elementData.category = generateRandomWord();
}
runAfterLoad(function() {
pixelTempCheckTemp = pixelTempCheck
pixelTempCheck = function(pixel) {
try {
pixelTempCheckTemp(pixel)
}
catch (e) {}
}
})
var fonttouse = fonts[Math.floor(Math.random() * fonts.length)]
runAfterLoad(function() {
//inverts scroll direction
if (navigator.platform.toUpperCase().indexOf('MAC')>=0) {
settings.invertscroll = false;
}
else {
settings.invertscroll = true;
}
// change every font to to random
var css = document.createElement("style")
css.innerHTML = "* { font-family: "+fonttouse+" !important; font-size: 32px !important;}"
document.body.appendChild(css)
// randomize background color
document.body.style.backgroundColor = "rgb(" + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + ")"
document.body.style.color = "rgb(" + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + ")"
document.body.style.textShadow = "20px 0px "+getRandomHexColor();
// replace choose element so it's impossible to find any element
chooseElementPrompt = function() {
alert("This feature is disabled for April Fools Day :)")
}
//showSaves = function() {
// alert("This feature is disabled for April Fools Day :)")
//}
showSaves = function() {
var savesParent = document.getElementById("savesParent");
var saveSlotList = document.getElementById("saveSlotList");
saveSlotList.innerHTML = "";
// loop 12 times, checking if local storage SandboxelsSaves/x exists
// <span class="saveSlot">Slot 1 <span disabled="true">Clear</span> <span disabled="true">Load</span> <span onclick="saveSlot(2)">Save</span></span>
// <span class="saveSlot">Unnamed <span onclick="clearSlot(2)">Clear</span> <span onclick="loadSlot(2)">Load</span> <span onclick="saveSlot(2)">Save</span></span>
for (var i = 1; i < 13; i++) {
var save = localStorage.getItem("SandboxelsSaves/"+i);
var name = funnysavenames[Math.floor(Math.random() * funnysavenames.length)];
if (save) {
name = JSON.parse(save).meta.name || "Unnamed";
name = name.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
// truncate
if (name.length > 16) { name = name.substring(0,16)+"..."; }
saveSlotList.innerHTML += "<span id='saveSlot"+i+"' data-name='"+name+"' class='saveSlot'><span class='saveSlotName'>"+name+"</span> <span onclick='clearSlot("+i+")' class='saveOption'>Clear</span> <span onclick='loadSlot("+i+")' class='saveOption'>Load</span> <span onclick='saveSlot("+i+")' class='saveOption'>Save</span></span>";
}
else {
saveSlotList.innerHTML += "<span id='saveSlot"+i+"' data-name='"+name+"' class='saveSlot'><span class='saveSlotName'>"+name+"</span> <span disabled='true' class='saveOption'>Clear</span> <span disabled='true' class='saveOption'>Load</span> <span onclick='saveSlot("+i+")' class='saveOption'>Save</span></span>";
}
}
savesParent.style.display = "block";
showingMenu = "saves";
}
// set zoom to 110%. it doesn't do anything but apparently offsets the brush? what.
document.body.style.zoom = "110%";
// set background (game background not page background) to a random color
setSetting('bg',getRandomHexColor());
// no more pause for you!
togglePause = function() {
alert("This feature is disabled for April Fools Day :)")
}
// Get all element keys
const elementsList = Object.keys(elements);
// Shuffle the keys randomly
elementsList.sort(() => Math.random() - 0.5);
// Create new shuffled elements object
const shuffledElements = {};
// Add elements to new object in shuffled order
elementsList.forEach(key => {
shuffledElements[key] = elements[key];
// blurs page
document.body.style.filter = "blur(0.8px)";
});
// Replace original with shuffled version
elements = shuffledElements;
})
// generate random element
function selectRandomElement() {
const elementKeys = Object.keys(elements);
const randomIndex = Math.floor(Math.random() * elementKeys.length);
const randomElementKey = elementKeys[randomIndex];
return elements[randomElementKey].name;
}
// randomly increases or decreases mouse size
setInterval(function(){
if (Math.random() < 0.5) {
if (Math.random() < 0.5) {
mouseSize = mouseSize + 1;
}
else {
mouseSize = mouseSize - 1;
}
}
if (Math.random() < 0.05) {
selectElement(selectRandomElement());
}
// evil random popup
if (Math.random() < 0.005) {
alert("funny popup");
}
// useless prompt
if (Math.random() < 0.005) {
var funnyuselessprompt = prompt("funny prompt");
}
if (Math.random() < 0.2) {
tps = tps + Math.round(Math.random()*4)-2;
}
if (Math.random() < 0.005) {
tps = 1000
}
if (Math.random() < 0.05) {
tps = 30
}
// every once in a while, everythign randomises
if (Math.random() < 0.1) {
document.body.style.color = getRandomHexColor();
document.body.style.textShadow = "20px 0px "+getRandomHexColor();
document.body.style.backgroundColor = "rgb(" + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + ")"
setSetting('bg',getRandomHexColor());
}
}, 200);

842
mods/fools24.js Normal file
View File

@ -0,0 +1,842 @@
/*
[Version 5.9.1 - April 1, 2024 - Multiversal Update]
+ Multiverse Time Travel
+ Use Timeline controls to navigate multidimensional space
+ Split off from your current timeline
+ Eat tool
+ Mirror Dimension
+ Access by throwing a test subject into a Mirror Portal
+ Moon
+ Moon Rock (Hidden)
+ Freeze tool
+ Freeze Ray
+ Air
+ UFO
+ Life Force
+ Carbon
+ Photon
+ Electron
+ BBQ Sauce
+ Mustard
+ Holy Grenade
+ Ice Ten
+ Love (Amends anuran ailments)
+ Love Bomb
+ Dirt Bomb
+ Cluster Cluster Bomb
+ Cherry
+ Blueberry
+ Olive
+ Blue Cheese
+ Toad
+ Mouse
+ Basketball
+ Baseball
+ Tennis Ball
+ Quirky Paint
+ Pen tool
+ Cursor
+ Powder
+ Footprint
+ Light Ice (Hidden)
+ Big Bang (Hidden)
[Changes]
+ 68% of Humans are lactose intolerant
+ 1% of Humans are gluten intolerant
+ Humans now drink Water
- Removed Gender Binary
+ Fireflies have a distinct sound
+ Bless converts Antimatter and Strange Matter to Normal Matter
+ Bless removes money, the root of all evil
+ Bless converts Plastic to eco-friendly Paper
+ Bless converts Water to Wine
+ Pb&J recipe
+ Helium can freeze again
+ Helium increases pitch of Human voice
- Removed Blood
~ Birds have been recolored as tribute
~ Udders produce many kinds of Milk
~ Cheerful Mode now hides ALL weapons
~ Moved Firework to Machines
~ Moved Ball to Special
~ Renamed Gray Goo to Grey Goo
~ Renamed Molten Tin to Moltin
~ Unhid Supernova
+ Re-added Cluster Bomb
[Bug Fixes]
~ Fixed: Water is not wet
*/
currentversion = "5.9.1"
if (!elements.bless.reactions) { elements.bless.reactions = {}; }
elements.bless.reactions.gold_coin = { elem2:null }
elements.bless.reactions.plastic = { elem2:"paper" }
elements.bless.reactions.bead = { elem2:"sawdust" }
elements.bless.reactions.water = { elem2:"alcohol", color2:"#722F37" }
if (!elements.lead.reactions) { elements.lead.reactions = {}; }
elements.lead.reactions.grape = { elem1:"nut_butter", elem2:"jelly" }
elements.lead.reactions.jelly = { elem1:"nut_butter" }
elements.head.tempTick = elements.head.tick
elements.head.tick = function(pixel) {
elements.head.tempTick(pixel);
if (!pixel.sus) { // susceptibility to disease
pixel.sus = Math.random();
}
}
if (!elements.head.reactions) { elements.head.reactions = {}; }
var lactoseReaction = function(pixel) {
if (pixel.sus < 0.68) { changePixel(pixel,"explosion") }
}
var glutenReaction = function(pixel) {
if (pixel.sus < 0.01) { changePixel(pixel,"explosion") }
}
elements.head.reactions.milk = { chance:0.1, func:lactoseReaction }
elements.head.reactions.cheese = { chance:0.1, func:lactoseReaction }
elements.head.reactions.butter = { chance:0.1, func:lactoseReaction }
elements.head.reactions.melted_cheese = { chance:0.1, func:lactoseReaction }
elements.head.reactions.melted_butter = { chance:0.1, func:lactoseReaction }
elements.head.reactions.yogurt = { chance:0.1, func:lactoseReaction }
elements.head.reactions.ice_cream = { chance:0.1, func:lactoseReaction }
elements.head.reactions.cream = { chance:0.1, func:lactoseReaction }
elements.head.reactions.frozen_yogurt = { chance:0.1, func:lactoseReaction }
elements.head.reactions.wheat = { chance:0.1, func:glutenReaction }
elements.head.reactions.bread = { chance:0.1, func:glutenReaction }
elements.head.reactions.toast = { chance:0.1, func:glutenReaction }
elements.head.reactions.gingerbread = { chance:0.1, func:glutenReaction }
elements.head.reactions.batter = { chance:0.1, func:glutenReaction }
elements.head.reactions.flour = { chance:0.1, func:glutenReaction }
elements.head.reactions.baked_batter = { chance:0.1, func:glutenReaction }
elements.head.reactions.water = { elem2:null, chance:0.1 }
elements.head.reactions.sugar_water = { elem2:null, chance:0.1 }
elements.head.reactions.seltzer = { elem2:null, chance:0.1 }
elements.body.color = "#069469";
elements.firework.category = "machines";
elements.normal_matter = {
color: "#9ba89b",
behavior: [
"M2|M2|M2",
"M1|XX|M1",
"M1|M1|M1",
],
category: "special",
state: "gas",
density: 2.1,
hidden: true
};
elements.bless.reactions.antimatter = { elem2:"normal_matter" }
elements.bless.reactions.strange_matter = { elem2:"normal_matter" }
elements.ice_ten = {
color: ["#84d0ff","#85daff","#80ffff"],
behavior: [
"XX|XX|XX",
"XX|CH:ice%0.5|XX",
"M2|M1|M2",
],
reactions: {
"ice_ten": { func:function(pixel1,pixel2){
var pixels = currentPixels.slice();
for (var i = 0; i < pixels.length; i++) {
var pixel = pixels[i];
pixel.temp = -10000;
pixelTempCheck(pixel);
}
}, elem1:null, elem2:null },
},
temp:-100,
category: "special",
state: "solid",
density: 917,
excludeRandom: true
};
elements.gray_goo.name = "grey_goo";
elements.big_bang = {
color: ["#ffebeb","#ffc9c9","#ffabab"],
behavior: [
"XX|XX|XX",
"XX|EX:200>hydrogen,neutron,proton,electric AND CH:void|XX",
"XX|XX|XX",
],
temp: 1000000000000000,
category: "energy",
state: "gas",
density: 1000,
hardness: 1,
hidden: true,
excludeRandom: true,
maxSize: 1,
cooldown: defaultCooldown,
noMix: true
};
elements.blood.name = "life_force";
elements.blood.color = ["#99ff00","#d9ff00"];
delete elements.blood_ice.color;
elements.blood_ice.name = "life_force_ice";
elements.holy_grenade = {
color: "#fffd6a",
behavior: [
"XX|EX:10>bless|XX",
"XX|XX|XX",
"M2|M1 AND EX:10>bless|M2",
],
category: "weapons",
state: "solid",
density: 1300,
excludeRandom: true,
cooldown: defaultCooldown
}
elements.love = {
color: ["#fccbff","#ff9edf","#ff5cb6"],
behavior: [
"M2|M1|M2",
"M1|DL%25|M1",
"M2|M1|M2",
],
temp:20,
state: "gas",
density: 0.001,
canPlace: true,
category: "energy",
stain: -0.5
};
elements.love.reactions = elements.bless.reactions;
elements.love.tool = elements.bless.tool;
if (!elements.frog.reactions) { elements.frog.reactions = {}; }
elements.frog.reactions.love = { elem1:"human" }
if (!elements.bomb.reactions) { elements.bomb.reactions = {}; }
elements.bomb.reactions.love = { elem1:"love_bomb" }
if (!elements.grenade.reactions) { elements.grenade.reactions = {}; }
elements.grenade.reactions.love = { elem1:"love_bomb" }
elements.love_bomb = {
color: "#ff84f1",
behavior: [
"XX|EX:10>love|XX",
"XX|XX|XX",
"M2|M1 AND EX:10>love|M2",
],
category: "weapons",
state: "solid",
density: 1300,
excludeRandom: true,
cooldown: defaultCooldown
}
elements.dirt_bomb = {
color: "#694805",
behavior: [
"XX|EX:10>dirt|XX",
"XX|XX|XX",
"M2|M1 AND EX:10>dirt|M2",
],
category: "weapons",
state: "solid",
density: 1300,
excludeRandom: true,
cooldown: defaultCooldown
}
elements.cluster_bomb = {
color: "#7d776d",
behavior: [
"XX|EX:10>smoke,smoke,smoke,smoke,smoke,grenade%1|XX",
"XX|XX|XX",
"M2|M1 AND EX:10>smoke,smoke,smoke,smoke,smoke,grenade%1|M2",
],
category: "weapons",
state: "solid",
density: 1300,
tempHigh: 1455.5,
stateHigh: "molten_steel",
excludeRandom: true,
cooldown: defaultCooldown
}
elements.cluster_cluster_bomb = {
color: "#c1b7a5",
behavior: [
"XX|EX:10>smoke,smoke,smoke,smoke,smoke,cluster_bomb%1|XX",
"XX|XX|XX",
"M2|M1 AND EX:10>smoke,smoke,smoke,smoke,smoke,cluster_bomb%1|M2",
],
category: "weapons",
state: "solid",
density: 1300,
tempHigh: 1455.5,
stateHigh: "molten_steel",
excludeRandom: true,
cooldown: defaultCooldown
}
elements.bbq_sauce = {
color: "#571E1A",
behavior: behaviors.LIQUID,
viscosity: 50000,
tempHigh: 260,
stateHigh: ["carbon_dioxide","methane","steam","salt","sugar"],
category:"liquids",
state: "liquid",
density: 1235,
stain: 0.05,
isFood: true
}
if (!elements.ketchup.reactions) { elements.ketchup.reactions = {}; }
elements.ketchup.reactions.molasses = { elem1:"bbq_sauce", elem2:"bbq_sauce" }
elements.mustard = {
color: "#e1ad01",
behavior: behaviors.LIQUID,
viscosity: 50000,
tempHigh: 260,
stateHigh: ["carbon_dioxide","methane","steam","sugar"],
category:"liquids",
state: "liquid",
density: 1235,
stain: 0.05,
isFood: true
}
elements.cherry = {
color: ["#ff295b","#ff212c","#ff1f1f","#ff4e33"],
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#8e0000" },
"concrete": { elem1:"juice", chance:0.1, color1:"#8e0000" },
"basalt": { elem1:"juice", chance:0.1, color1:"#8e0000" },
"limestone": { elem1:"juice", chance:0.1, color1:"#8e0000" },
"tuff": { elem1:"juice", chance:0.1, color1:"#8e0000" },
"water": { elem2:"juice", chance:0.005, color2:"#8e0000" },
"sugar_water": { elem2:"juice", chance:0.025, color2:"#8e0000" },
"acid": { elem1:"juice", color1:"#8e0000" },
"acid_gas": { elem1:"juice", color1:"#8e0000" },
},
tempHigh: 256,
stateHigh: ["steam","sugar"],
category: "food",
state: "solid",
density: 1154,
breakInto: "juice",
breakIntoColor: "#8e0000",
ignoreAir: true,
isFood: true
}
elements.blueberry = {
color: ["#4929ff","#5821ff","#221cc8","#2406a0"],
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#1b1259" },
"concrete": { elem1:"juice", chance:0.1, color1:"#1b1259" },
"basalt": { elem1:"juice", chance:0.1, color1:"#1b1259" },
"limestone": { elem1:"juice", chance:0.1, color1:"#1b1259" },
"tuff": { elem1:"juice", chance:0.1, color1:"#1b1259" },
"water": { elem2:"juice", chance:0.005, color2:"#1b1259" },
"sugar_water": { elem2:"juice", chance:0.025, color2:"#1b1259" },
"acid": { elem1:"juice", color1:"#1b1259" },
"acid_gas": { elem1:"juice", color1:"#1b1259" },
},
tempHigh: 256,
stateHigh: ["steam","sugar"],
category: "food",
state: "solid",
density: 1154,
breakInto: "juice",
breakIntoColor: "#1b1259",
ignoreAir: true,
isFood: true
}
elements.olive = {
color: ["#808000","#91912c","#a1a148","#686800"],
behavior: behaviors.POWDER,
reactions: {
"rock": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
"concrete": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
"basalt": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
"limestone": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
"tuff": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
"water": { elem2:"juice", chance:0.005, color2:"#ebeb55" },
"sugar_water": { elem2:"juice", chance:0.025, color2:"#ebeb55" },
"acid": { elem1:"juice", color1:"#ebeb55" },
"acid_gas": { elem1:"juice", color1:"#ebeb55" },
},
tempHigh: 256,
stateHigh: ["steam","sugar"],
category: "food",
state: "solid",
density: 1154,
breakInto: "juice",
breakIntoColor: "#ebeb55",
ignoreAir: true,
isFood: true
}
elements.carbon = elements.charcoal;
elements.photon = elements.light;
elements.electron = elements.electric;
elements.blue_cheese = {
color: "#0352fc",
behavior: behaviors.STURDYPOWDER,
tempHigh: 54,
stateHigh: "melted_cheese",
category: "food",
state: "solid",
density: 477.62,
isFood: true
};
if (elements.cheese.reactions) { elements.blue_cheese.reactions = elements.cheese.reactions; }
elements.moon = {
color: ["#b9b9b9","#8e8e8e","#b9b9b9"],
behavior: behaviors.WALL,
tempHigh: 100,
stateHigh: "melted_cheese",
category: "special",
state: "solid",
density: 3300,
insulate: true,
noMix: true,
alias: "satellite",
movable: false,
hardness: 0.8,
breakInto: "moon_rock"
};
if (!elements.light.reactions) { elements.light.reactions = {}; }
elements.light.reactions.moon = { color1:"#ffffff" }
elements.light.reactions.moon_rock = { color1:"#ffffff" }
elements.moon_rock = {
color: ["#b9b9b9","#a3a3a3","#898989"],
behavior: behaviors.POWDER,
tempHigh: 100,
stateHigh: "melted_cheese",
category: "land",
state: "solid",
density: 3300,
hardness: 0.25,
breakInto: "dust",
hidden: true,
alias: "lunar_rock"
};
if (elements.rock.reactions) { elements.moon_rock.reactions = elements.rock.reactions; }
elements.toad = elements.frog;
elements.mouse = {
color: ["#aaaaaa","#8a8a8a","#cdcdcd"],
behavior: [
"XX|M2%1.5|M2%5",
"XX|FX%2|M2 AND BO",
"XX|M1|M2",
],
egg: "mouse",
category: "life",
temp: 37.6,
tempHigh: 120,
stateHigh: "cooked_meat",
tempLow: -18,
stateLow: "frozen_meat",
breakInto: "blood",
burn:80,
burnTime:150,
state: "solid",
density: 1450,
conduct: 0.25
};
elements.bless.reactions.rat = { elem2:"mouse" }
elements.ball.hidden = false;
elements.basketball = {
color: "#d14b17",
behavior: [
"XX|XX|XX",
"XX|FY:0%5|XX",
"XX|M1 AND BO|XX",
],
tempHigh: 250,
stateHigh: "molten_plastic",
category: "special",
flipY: false,
flippableY: true,
};
elements.baseball = {
color: "#d7d7d7",
behavior: [
"XX|XX|XX",
"XX|FY:0%5|XX",
"XX|M1 AND BO|XX",
],
tempHigh: 250,
stateHigh: "molten_plastic",
category: "special",
flipY: false,
flippableY: true,
};
elements.tennis_ball = {
color: "#c2ff48",
behavior: [
"XX|XX|XX",
"XX|FY:0%5|XX",
"XX|M1 AND BO|XX",
],
tempHigh: 250,
stateHigh: "molten_plastic",
category: "special",
flipY: false,
flippableY: true,
};
elements.supernova.hidden = false;
elements.quirky_paint = {
color: ["#b1b1b1","#9dc270","#c170c2","#107f10","#442f21","#ff6e6e","#34555f"],
tool: function(pixel) {
var hexcode = "#"+(Math.floor(Math.random()*16777215).toString(16).padStart(6,"0"));
pixel.color = pixelColorPick(pixel,hexcode);
delete pixel.origColor;
},
category: "special",
canPlace: false,
desc: "Use on pixels to change color randomly."
};
elements.bird.color = "#1DA1F2";
elements.freeze = {
color: ["#b1e5ff","#6e89ec"],
tool: function(pixel) {
pixel.temp -= 1000;
pixelTempCheck(pixel);
},
category: "energy",
excludeRandom: true
};
elements.freeze_ray = {
color: ["#00aaff","#0037ff"],
tick: function(pixel) {
var x = pixel.x;
for (var y = pixel.y; y < height; y++) {
if (outOfBounds(x, y)) {
break;
}
if (isEmpty(x, y)) {
if (Math.random() > 0.05) { continue }
createPixel("flash", x, y);
pixelMap[x][y].color = "#00aaff";
pixelMap[x][y].temp = -200;
}
else {
if (elements[pixelMap[x][y].element].isGas) { continue }
if (elements[pixelMap[x][y].element].id === elements.heat_ray.id) { break }
pixelMap[x][y].temp -= 100;
pixelTempCheck(pixelMap[x][y]);
break;
}
}
deletePixel(pixel.x, pixel.y);
},
temp: -200,
category: "energy",
state: "gas",
density: 1,
excludeRandom: true,
noMix: true
};
elements.ufo = {
color: "#9ddfa3",
behavior: [
"XX|XX|XX",
"XX|FX%5|M1%50",
"XX|XX|XX"
],
tick: function(pixel) {
if (pixel.ray) {
if (isEmpty(pixel.x,pixel.y+1)) {
createPixel(pixel.ray,pixel.x,pixel.y+1);
}
if (Math.random() < 0.1) {
pixel.ray = null;
}
}
else if (Math.random() < 0.1) {
var rays = ["heat_ray","freeze_ray","god_ray"];
pixel.ray = rays[Math.floor(Math.random()*rays.length)];
}
},
breakInto: ["metal_scrap","slime"],
category: "special"
};
elements.udder.tick = function(pixel) {
if (Math.random() <= 0.025 && isEmpty(pixel.x,pixel.y+1)) {
var milks = ["milk","pilk","chocolate_milk","fruit_milk","eggnog"];
var milk = milks[Math.floor(Math.random()*milks.length)];
createPixel(milk,pixel.x,pixel.y+1);
pixelMap[pixel.x][pixel.y+1].temp = 38;
}
doDefaults(pixel);
};
elements.liquid_light.tempLow = -1000;
elements.liquid_light.stateLowName = "light_ice";
elements.light_ice = {
behavior: behaviors.WALL,
state: "solid",
}
fireflySound = null;
elements.firefly.onSelect = function() {
fireflySound = new Audio("https://archive.org/download/09Fireflies/09%20Fireflies.mp3");
}
elements.firefly.onMouseDown = function() {
if (fireflySound) { fireflySound.play(); }
}
elements.pen = {
color: "#000000",
tool: function(pixel) {
if (pixel.element === "paper") {
pixel.color = pixelColorPick(pixel,"#000000");
}
},
category: "special",
desc: "Draws on Paper."
}
elements.eat = {
color: ["#ffba79","#efff79"],
tool: function(pixel) {
if (elements[pixel.element].isFood) {
deletePixel(pixel.x,pixel.y);
}
},
category: "tools",
desc: "Consumes edible pixels."
}
elements.molten_tin.name = "moltin";
elements.ball.category = "energy";
elements.liquid_helium.tempLow = -272;
elements.cursor = {
color: ["#000000","#00ff00"],
behavior: behaviors.WALL,
tick: function(pixel) {
if (pixelTicks % 60 < 30) {
pixel.color = "#000000";
}
else {
pixel.color = "#00ff00";
}
},
category: "special",
related: "pointer"
}
elements.pointer.related = "cursor";
elements.footprint = {
color: ["#73777A","#B3B7BA","#F3F7FA"],
colorPattern: [
"00000001",
"01111112",
"01111112",
"01111112",
"01111112",
"01111112",
"01111112",
"12222222",
],
colorKey: {
"0": "#73777A",
"1": "#B3B7BA",
"2": "#F3F7FA",
},
behavior: behaviors.WALL,
category: "special"
}
elements.air = {
color: "#000000",
tool: function(){},
category: "gases"
}
elements.powder = {
color: "#ffffff",
colorPattern: ["F"],
colorKey: { "F": "#ffffff" },
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
}
inMirrorDimension = false;
function getMousePos(canvas, evt) {
// If evt.touches is defined, use the first touch
if (evt.touches) {
evt.preventDefault();
evt = evt.touches[0];
isMobile = true;
}
var rect = canvas.getBoundingClientRect();
return {
// Round to nearest pixel
x: Math.round((evt.clientX - rect.left)/pixelSize-0.5),
y: Math.round((evt.clientY - rect.top)/pixelSize-0.5)
};
}
oldGetMousePos = getMousePos;
elements.mirror_portal = {
color: ["#e07aff","#693778","#4b2843","#1f0f1b"],
behavior: [
"XX|SW:mirror_portal%10|XX",
"SW:mirror_portal%10|XX|SW:mirror_portal%10",
"XX|SW:mirror_portal%10|XX"
],
category: "special",
reactions: {
"body": {
func: function() {
if (!inMirrorDimension) {
inMirrorDimension = true;
for (var i = 0; i < currentPixels.length; i++) {
var pixel = currentPixels[i];
if (pixel.element === "mirror_portal") {
deletePixel(pixel.x,pixel.y);
i--;
}
}
document.head.insertAdjacentHTML("beforeend",`
<style id="mirrorDimensionStyle">
#game {-moz-transform: scale(-1, -1);
-o-transform: scale(-1, -1);
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1);
filter: invert(100%);}
.elementButton {filter: invert(100%);}
.pagetitle::after { content:" Bandsoxels" }
</style>
`);
// invert the math in getMousePos
getMousePos = function(canvas, evt) {
if (evt.touches) {
evt.preventDefault();
evt = evt.touches[0];
isMobile = true;
}
var rect = canvas.getBoundingClientRect();
return {
x: Math.round((rect.right - evt.clientX)/pixelSize-0.5),
y: Math.round((rect.bottom - evt.clientY)/pixelSize-0.5)
};
}
}
else {
inMirrorDimension = false;
document.getElementById("mirrorDimensionStyle").remove();
for (var i = 0; i < currentPixels.length; i++) {
var pixel = currentPixels[i];
if (pixel.element === "mirror_portal") {
deletePixel(pixel.x,pixel.y);
i--;
}
}
getMousePos = oldGetMousePos;
}
},
}
},
}
for (var element in elements) {
var info = elements[element];
if (info.category === "weapons") {
info.nocheer = true
}
}
multiverseTimelines = [];
multiverseIndex = 0;
function saveTimeline() {
// save at current index
multiverseTimelines[multiverseIndex] = generateSave(undefined,{keep:["temp","color"]});
}
function splitTimeline() {
saveTimeline();
var newSave = generateSave(undefined,{keep:["temp","color"]});
// add new timeline one after current
multiverseTimelines.splice(multiverseIndex+1,0,newSave);
loadTimeline(multiverseIndex+1);
}
function newTimeline() {
// add new timeline at end
saveTimeline();
clearAll();
multiverseIndex = multiverseTimelines.length;
saveTimeline();
loadTimeline(multiverseIndex);
}
function loadTimeline(i) {
multiverseIndex = i;
loadSave(multiverseTimelines[i]);
document.getElementById("timelineIndex").textContent = i;
}
function nextTimeline() {
saveTimeline();
if (multiverseIndex === multiverseTimelines.length-1) {
newTimeline();
return
}
loadTimeline(multiverseIndex+1);
}
function prevTimeline() {
saveTimeline();
if (multiverseIndex === 0) {
return
}
loadTimeline(multiverseIndex-1);
}
function redoTimeline() {
loadTimeline(multiverseIndex);
}
function deleteTimeline() {
multiverseTimelines.splice(multiverseIndex,1);
if (multiverseIndex === multiverseTimelines.length) {
multiverseIndex--;
}
if (multiverseTimelines.length < 1) {
newTimeline();
}
loadTimeline(multiverseIndex);
}
window.addEventListener("load", function() {
absoluteZero = -Infinity;
this.document.getElementById("elementControls").insertAdjacentHTML("afterend",`
<div style="display:block; padding:5px; font-size:13px">
<button onclick="location.search = '?fools=false'">Return to Normalcy</button>
</div>
`);
this.document.getElementById("elementControls").insertAdjacentHTML("afterend",`
<div style="display:block; padding:5px; font-size:13px">
Timeline-<span id="timelineIndex">0</span>:<button onclick="splitTimeline()">Split</button><button onclick="newTimeline()">New</button><button onclick="prevTimeline()">&lt;</button><button onclick="nextTimeline()">&gt;</button><button onclick="redoTimeline()">Redo</button><button onclick="deleteTimeline()">Delete</button>
</div>
`);
this.document.getElementById("thanksTo").insertAdjacentHTML("beforeend",`, and the friends we made along the way`);
})
window.addEventListener("keydown", function(e) {
if (e.ctrlKey || e.metaKey) {
return
}
})

View File

@ -24,9 +24,9 @@ elements.selective_exploder = {
}
},
onSelect: function() {
var answer2 = prompt("Please input what element to explode.",(explode1Var||undefined));
if (!answer2) { return }
explode1Var = answer2;
var answer1 = prompt("Please input what element to explode.",(explode1Var||undefined));
if (!answer1) { return }
explode1Var = answer1;
}
},
convert11Var = 0;
@ -41,12 +41,12 @@ elements.converter_tool = {
}
},
onSelect: function() {
var answer3 = prompt("Please input what should element be converted.",(convert11Var||undefined));
if (!answer3) { return }
convert11Var = answer3;
var answer4 = prompt("Please input what element to convert into.",(convert22Var||undefined));
if (!answer4) { return }
convert22Var = answer4;
var answer1 = prompt("Please input what should element be converted.",(convert11Var||undefined));
if (!answer1) { return }
convert11Var = answer1;
var answer2 = prompt("Please input what element to convert into.",(convert22Var||undefined));
if (!answer2) { return }
convert22Var = answer2;
}
},
elements.fast_bomb = {
@ -82,9 +82,9 @@ elements.exclusive_eraser = {
}
},
onSelect: function() {
var answer5 = prompt("Please input what element shouldn't be erased.",(exclude1Var||undefined));
if (!answer5) { return }
exclude1Var = answer5;
var answer1 = prompt("Please input what element shouldn't be erased.",(exclude1Var||undefined));
if (!answer1) { return }
exclude1Var = answer1;
}
},
elements.tenth_heater = {
@ -99,7 +99,7 @@ elements.tenth_heater = {
},
elements.e_tenth_heater = {
category: "special",
color: "#ff0000",
color: "#ff3000",
behavior: behaviors.WALL,
behaviorOn: [
"XX|HT:0.1|XX",
@ -108,4 +108,63 @@ elements.e_tenth_heater = {
],
ignore: "tenth_heater",
conduct: 1
},
paint1Var = 0;
elements.selective_paint_tool = {
color: ["#ff0000","#ff0000","#ff0000","#00ff00","#00ff00","#00ff00","#0000ff","#0000ff","#0000ff"],
tool: function(pixel) {
if (pixel.element === paint1Var) {
if (!shiftDown) {
pixel.color = pixelColorPick(pixel,currentColor)
}
else {
// convert the hex of currentColor to rgb and set it as a string
var rgb = currentColor.replace("#","").match(/.{1,2}/g);
for (var i = 0; i < rgb.length; i++) {
rgb[i] = parseInt(rgb[i],16);
}
pixel.color = "rgb(" + rgb.join(",") + ")"
}
delete pixel.origColor;
}
},
onSelect: function() {
var answer1 = prompt("Please input what element should be painted.",(paint1Var||undefined));
if (!answer1) { return }
paint1Var = answer1;
},
customColor: true,
category: "tools",
canPlace: false,
desc: "Select certain pixels to change color."
},
paint2Var = 0;
elements.exclusive_paint_tool = {
color: ["#ff0000","#00ff00","#0000ff","#0000ff","#00ff00","#ff0000"],
tool: function(pixel) {
if (pixel.element !== paint2Var) {
if (!shiftDown) {
pixel.color = pixelColorPick(pixel,currentColor)
}
else {
// convert the hex of currentColor to rgb and set it as a string
var rgb = currentColor.replace("#","").match(/.{1,2}/g);
for (var i = 0; i < rgb.length; i++) {
rgb[i] = parseInt(rgb[i],16);
}
pixel.color = "rgb(" + rgb.join(",") + ")"
}
delete pixel.origColor;
}
},
onSelect: function() {
var answer1 = prompt("Please input what element should be painted.",(paint2Var||undefined));
if (!answer1) { return }
paint2Var = answer1;
},
customColor: true,
category: "tools",
canPlace: false,
desc: "Excludes pixels you don't want to color."
//hello
}

View File

@ -74,6 +74,14 @@ class Type {
this.temp = undefined;
this.reactions = undefined;
this.viscosity = undefined;
this.conduct = undefined;
this.burn = undefined;
this.burning = undefined;
this.burnTime = undefined;
this.burnInto = undefined;
this.breakInto = undefined;
this.properties = undefined;
this.maxSize = undefined;
}
setColor(color) {
@ -87,38 +95,80 @@ class Type {
}
}
function createPowders() {
function createNirmics() {
const Ni = new Type("nirme");
Ni.setColor("22b14c");
Ni.setColor(["#5fcf80", "#22b14c", "#157330"]);
Ni.behavior = bb.POWDER;
Ni.category = cat.POWDERS;
Ni.state = state.SOLID;
Ni.density = 1752;
Ni.tempHigh = 365;
Ni.stateHigh = "nirliquid";
Ni.reactions = {
"water": { elem1: "dull_nirme", elem2: null },
"salt_water": { elem1: "dull_nirme", elem2: null },
"sugar_water": { elem1: "dull_nirme", elem2: null },
"seltzer": { elem1: "dull_nirme", elem2: null },
"dirty_water": { elem1: "dull_nirme", elem2: null },
"pool_water": { elem1: "dull_nirme", elem2: null },
"slush": { elem1: "dull_nirme", elem2: null },
"diamond": { elem2: "emerald", chance: 0.002 },
"sulfur": { elem1: "pop", elem2: null },
}
Ni.Add();
const DNi = new Type("dull_nirme");
DNi.setColor("5c916c");
DNi.setColor(["#518a62", "#487355"]);
DNi.behavior = bb.STURDYPOWDER;
DNi.category = cat.STATES;
DNi.state = state.SOLID;
DNi.density = 1752;
DNi.tempHigh = 365;
DNi.stateHigh = "nirliquid";
DNi.hidden = true;
DNi.Add();
const Em = new Type("emerald");
Em.setColor(["#00f49f", "#2fe094", "#b3ffd6", "#5fd9c5"]);
Em.behavior = bb.POWDER;
Em.category = cat.POWDERS;
Em.state = state.SOLID;
Em.density = 2750;
Em.Add();
const Nl = new Type("nirliquid");
Nl.setColor(["#68cc86", "#60b378", "#579c6b"]);
Nl.behavior = bb.LIQUID;
Nl.category = cat.LIQUIDS;
Nl.state = state.LIQUID;
Nl.density = 1711;
Nl.tempLow = -17;
Nl.stateLow = "nirme";
Nl.Add();
const Nr = new Type("nirmoll");
Nr.setColor("22b14c");
Nr.behavior = [
"M2%2 |XX|M2%2 ",
"M2%10|XX|M2%10",
"M1%25|M1|M1%25",
]
Nr.category = cat.LIFE;
Nr.state = state.SOLID;
Nr.density = 40;
Nr.tempHigh = 50;
Nr.stateHigh = "nirme";
Nr.tempHigh = 0;
Nr.stateHigh = "nirme";
Nr.breakInto = ["nirme", "nirme", "blood"];
Nr.reactions = {
"water": { elem1: "nirme" },
"salt_water": { elem1: "nirme" },
"sugar_water": { elem1: "nirme" },
"seltzer": { elem1: "nirme" },
"dirty_water": { elem1: "nirme" },
"pool_water": { elem1: "nirme" },
"slush": { elem1: "nirme" },
"acid": { elem1: "nirme" },
"poison": { elem1: "nirme" },
"egg": { elem2: "nirmoll", chance: 0.001 },
}
Nr.Add();
}
function createMetals() {
function createMinerals() {
const Tg = new Type("thingite");
Tg.setColor("4f5263");
Tg.behavior = bb.WALL;
@ -127,6 +177,7 @@ function createMetals() {
Tg.density = 9408;
Tg.tempHigh = 700;
Tg.stateHigh = "molten_thingite";
Tg.conduct = 0.41;
Tg.Add();
const MTg = new Type("molten_thingite");
@ -149,6 +200,7 @@ function createMetals() {
Or.density = 12403;
Or.tempHigh = 1600;
Or.stateHigh = "molten_orangium";
Or.conduct = 0.26;
Or.Add();
const MOr = new Type("molten_orangium");
@ -162,7 +214,59 @@ function createMetals() {
MOr.stateLow = "orangium";
MOr.hidden = true;
MOr.Add();
const Em = new Type("emerald");
Em.setColor(["#30e389", "#3ac98c", "#b3ffd6", "#5fd9c5"]);
Em.behavior = bb.POWDER;
Em.category = cat.POWDERS;
Em.state = state.SOLID;
Em.density = 2750;
Em.Add();
}
createPowders();
createMetals();
function createOther() {
const Fw = new Type("firewall");
Fw.setColor(["#ff6b21","#ffa600","#ff4000"]);
Fw.behavior = bb.WALL;
Fw.category = cat.SOLIDS;
Fw.state = state.SOLID;
Fw.density = 100;
Fw.temp = 600;
Fw.tempLow = 100;
Fw.stateLow = "wall";
Fw.tempHigh = 7000;
Fw.stateHigh = "plasma";
Fw.breakInto = "fire";
Fw.reactions = {
"water": { elem1: "wall", chance: 0.2 },
"steam": { elem1: "wall", chance: 0.2 },
"carbon_dioxide": { elem1: "wall", chance: 0.2 },
"foam": { elem1: "wall", chance: 0.2 },
"dirty_water": { elem1: "wall", chance: 0.2 },
"salt_water": { elem1: "wall", chance: 0.2 },
"sugar_water": { elem1: "wall", chance: 0.2 },
"seltzer": { elem1: "wall", chance: 0.2 },
"pool_water": { elem1: "wall", chance: 0.2 },
},
Fw.Add();
const Nz = new Type("nirmizer");
Nz.setColor("425949");
Nz.behavior = [
"XX |CH:nirme>nirmoll%10|XX ",
"CH:nirme>nirmoll%10|XX |CH:nirme>nirmoll%10",
"XX |CH:nirme>nirmoll%10|XX ",
]
Nz.category = cat.MACHINES;
Nz.state = state.SOLID;
Nz.density = 1220;
Nz.tempLow = -273;
Nz.stateLow = "nirme";
Nz.tempHigh = 3000;
Nz.stateHigh = "nirliquid";
Nz.Add();
}
createNirmics();
createMinerals();
createOther();

130
mods/ocean.js Normal file
View File

@ -0,0 +1,130 @@
// made by sqec
elements.coral_stem = {
color: "#4a5e49",
behavior: [
"CH:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup>coral_stem,coral,coral%2|CH:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup>coral,coral_stem,coral,coral%2|CH:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup>coral_stem,coral,coral%2",
"XX|XX|XX",
"XX|XX|XX",
],
tick: function(pixel) {
if (!pixel.fColor) {
pixel.fColor = "hsl(" + Math.floor(Math.random()*360) + ",100%,50%)";
}
var coordsToCheck = [
[pixel.x-1,pixel.y],
[pixel.x+1,pixel.y],
[pixel.x,pixel.y-1],
[pixel.x,pixel.y+1],
]
for (var i = 0; i < coordsToCheck.length; i++) {
var coord = coordsToCheck[i];
if (isEmpty(coord[0],coord[1])) {
createPixel("coral",coord[0],coord[1]);
pixelMap[coord[0]][coord[1]].color = pixel.fColor;
}
}
doDefaults(pixel)
},
tempHigh: 100,
stateHigh: "dead_coral",
tempLow: -30,
stateLow: "dead_coral",
category: "life",
burn: 40,
burnTime: 50,
burnInto: [,"ember","charcoal"],
hidden: true,
state: "solid",
density: 1500,
hardness: 0.15,
hidden: true,
}
elements.coral = {
color: ["#ff0000","#ff8800","#ffff00","#88ff00","#00ff00","#00ff88","#00ffff","#0088ff","#0000ff","#8800ff","#ff00ff"],
behavior: [
"XX|XX|XX",
"XX|XX|XX",
"XX|XX|XX",
],
reactions: {
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035}
},
category:"life",
tempHigh: 100,
stateHigh: "dead_plant",
tempLow: -1.66,
stateLow: "frozen_plant",
burn:65,
burnTime:60,
burnInto: "dead_plant",
breakInto: "dead_plant",
state: "solid",
density: 1050,
hidden: true,
properties:{
"colored": false
}
}
elements.coral_egg = {
color: "#4a5e49",
behavior: [
"XX|XX|XX",
"XX|XX|XX",
"XX|M1 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup|XX",
],
tick: function(pixel) {
if (!isEmpty(pixel.x,pixel.y+1)) {
if (!outOfBounds(pixel.x,pixel.y+1)) {
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
changePixel(dirtPixel,"root");
changePixel(pixel,"coral_stem");
}
}
}
if (pixel.age > 100) {
changePixel(pixel,"coral_stem");
}
pixel.age++;
doDefaults(pixel)
},
tempHigh: 100,
stateHigh: "dead_coral",
tempLow: -30,
stateLow: "dead_coral",
category: "life",
burn: 40,
hidden: true,
state: "solid",
density: 1500,
hardness: 0.15,
properties:{
age:0
}
}
elements.dead_coral = {
color: "#ababab",
behavior: [
"XX|XX|XX",
"XX|XX|XX",
"XX|XX|XX",
],
reactions: {
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035}
},
stateHigh:"quicklime",
tempHigh:400,
category:"life",
burn:65,
breakInto: "quicklime",
state: "solid",
density: 1050,
hidden: true,
}

250
mods/pullers.js Normal file
View File

@ -0,0 +1,250 @@
// made by voidapex11
// a sandboxels mod that adds pullers
/*
==CHANGELOG==
Version 1.1.1#
@voidapex11
~initial comit
+pullersDesc
+imovable_inator& movable_inator
+imovable wall, steel & insulation
+L, R, U & D pullers
+void light&dark
~don't comit without permision as you may disrupt other dev's hard work
~update changelog with newer updates first
~Version format is:
rewrites.major updates.paches&minor feechers
put a '#' at end of version format if it has not been pushed to the github
~for change-log
'~' means notes/changes '+' means aditions and '-' is removals
*/
behaviors.SELFDELETE = [
"XX|XX|XX",
"XX|DL|XX",
"XX|XX|XX",
];
pullerColour = '#e0adb6'
elements.pullersDesc = {
color: pullerColour,
name: 'pullers.js',
category: "mods",
behavior: behaviors.SELFDELETE,
tool: function(pixel) {},
onSelect: function(pixel) {
let info1stMod = `pullers.js is a mod made by voidapex11 that adds pullers to sandboxels`
alert(info1stMod)
return
},
};
// for the inator reference: if you know you know
elements.imovable_inator = {
color: "#525252",
tool: function(pixel) {
pixel.imovable = true
},
category: "tools",
}
elements.movable_inator = {
color: "#a8a8a8",
tool: function(pixel) {
pixel.imovable = false
},
category: 'tools',
}
elements.imovable_wall = {
color: "#808080",
behavior: behaviors.WALL,
category: "solids",
insulate: true,
hardness: 1,
noMix: true,
properties: {
imovable: true
}
}
elements.imovable_steel = {
color: "#71797e",
behavior: behaviors.WALL,
reactions: {
"water": { elem1:"rust", chance:0.002 },
"salt_water": { elem1:"rust", chance:0.004 },
"dirty_water": { elem1:"rust", chance:0.03 },
"pool_water": { elem1:"rust", chance:0.03 },
"sugar_water": { elem1:"rust", chance:0.003 },
"seltzer": { elem1:"rust", chance:0.005 },
"salt": { elem1:"rust", chance:0.003 },
"blood": { elem1:"rust", chance:0.002 },
"infection": { elem1:"rust", chance:0.002 },
"antibody": { elem1:"rust", chance:0.002 },
},
tempHigh: 1455.5,
category: "solids",
density: 7850,
conduct: 0.42,
hardness: 0.8,
properties: {
imovable: true
}
}
elements.imovable_insulation = {
color: "#b8aea5",
behavior: behaviors.WALL,
category: "solids",
insulate: true,
state: "solid",
noMix: true,
properties: {
imovable: true
}
}
elements.left_puller = {
color: pullerColour,
properties: {
range: 10,
pushStrength: 1,
},
tick: function(pixel) {
pixel.range ??= 10;
pixel.pushStrength ??= 1;
for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) {
for (i = 1; i <= pixel.range; i++) {
if (!isEmpty(pixel.x + i, pixel.y, true)) {
if (pixelMap[pixel.x+i][pixel.y]['imovable']) {break}
else {
tryMove(pixelMap[pixel.x + i][pixel.y], pixel.x + i - 1, pixel.y);
}
}
}
};
doDefaults(pixel);
},
category: "machines",
breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"],
tempHigh: 2400,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"],
density: 10000,
hardness: 0.85,
conduct: 1,
state: "solid",
}
elements.right_puller = {
color: pullerColour,
properties: {
range: 10,
pushStrength: 1,
},
tick: function(pixel) {
pixel.range ??= 10;
pixel.pushStrength ??= 1;
for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) {
for (i = 1; i <= pixel.range; i++) {
if (!isEmpty(pixel.x - i, pixel.y, true)) {
if (pixelMap[pixel.x-i][pixel.y]['imovable']) {break}
else {
tryMove(pixelMap[pixel.x - i][pixel.y], pixel.x - i + 1, pixel.y);
}
}
}
};
doDefaults(pixel);
},
category: "machines",
breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"],
tempHigh: 2400,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"],
density: 10000,
hardness: 0.85,
conduct: 1,
state: "solid",
}
elements.down_puller = {
color: pullerColour,
properties: {
range: 10,
pushStrength: 1,
},
tick: function(pixel) {
pixel.range ??= 10;
pixel.pushStrength ??= 1;
for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) {
for (i = 1; i <= pixel.range; i++) {
if (!isEmpty(pixel.x, pixel.y - i, true)) {
if (pixelMap[pixel.x][pixel.y - i]['imovable']) {break}
else {
tryMove(pixelMap[pixel.x][pixel.y - i], pixel.x, pixel.y - i + 1);
}
}
}
};
doDefaults(pixel);
},
category: "machines",
breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"],
tempHigh: 2400,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"],
density: 10000,
hardness: 0.85,
conduct: 1,
state: "solid",
}
elements.up_puller = {
color: pullerColour,
properties: {
range: 10,
pushStrength: 1,
},
tick: function(pixel) {
pixel.range ??= 10;
pixel.pushStrength ??= 1;
for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) {
for (i = 1; i <= pixel.range; i++) {
if (!isEmpty(pixel.x, pixel.y + i, true)) {
if (pixelMap[pixel.x][pixel.y + i]['imovable']){
break
}
else {
tryMove(pixelMap[pixel.x][pixel.y + i], pixel.x, pixel.y + i - 1);
}
}
}
};
doDefaults(pixel);
},
category: "machines",
breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"],
tempHigh: 2400,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"],
density: 10000,
hardness: 0.85,
conduct: 1,
state: "solid",
}
if (enabledMods.includes("pushers.js")) {
console.info('compatibility with pushers.js and imovable objects coming in a later update of the pullers.js')
}

File diff suppressed because it is too large Load Diff

135
mods/radioactive.js Normal file
View File

@ -0,0 +1,135 @@
elements.technetium = {
category: "powders",
state: "solid",
color: "#D3D3D3",
tempHigh: 2157,
stateHigh: "molten_technetium",
density: 11359,
temp: 20,
behavior: [
"XX|CR:radiation%3 AND CR:fallout%0.2|XX",
"CR:radiation%3 AND CR:fallout%0.2|XX|CR:radiation%3 AND CR:fallout%0.2",
"M1|CR:radiation%3 AND M2 AND CR:fallout%0.2|M1",
],
reactions: {
"water": { elem1: null, elem2: "dirty_water" },
},
}
elements.molten_technetium = {
category: "states",
hidden: true,
state: "liquid",
color: ["#F2F2E5", "#E0C29F", "#D0CFC7", "#BDB7B0", "#A0958C", "#FFB300", "#F0E68C", "#BD10E0", "#FFF0F5"],
behavior: [
"XX|CR:radiation%3 AND CR:fallout%0.2 AND CR:plasma,fire,fire,fire,fire%0.5|XX",
"M2 AND CR:radiation%3 AND CR:fallout%0.2 AND CR:plasma,fire,fire,fire,fire%0.5|XX|M2 AND CR:radiation%3 AND CR:fallout%0.2 AND CR:plasma,fire,fire,fire,fire%0.5",
"M1|M1 AND CR:radiation%3 AND CR:fallout%0.2|M1",
],
tempLow: 2157,
stateLow: "technetium",
density: 11359,
}
elements.francium = {
category: "powders",
state: "solid",
color: ["#DE0047", "#4169E1", "#007FFF", "#9ACD32", "#FFD700", "#C800C8"],
behavior: [
"XX|CR:radiation%1.5|XX",
"CR:radiation%1.5|XX|CR:radiation%1.5",
"M2|M1 AND CR:radiation%1.5|M2",
],
tempHigh: 27,
stateHigh: "molten_francium",
density: 2480,
}
elements.molten_francium = {
category: "states",
hidden: true,
tempLow: 27,
stateLow: "francium",
density: 2480,
color: ["#C71585", "#FF00FF", "#A020F0", "#4B0082", "#EE82EE", "#FF9933", "#F97A3E", "#F05945"],
behavior: [
"XX|CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6|XX",
"M2 AND CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6|XX|M2 AND CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6",
"M1|M1 AND CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6|M1",
],
}
elements.radium = {
category: "powders",
tempHigh: 700,
stateHigh: "molten_radium",
density: 5500,
state: "solid",
color: ["#F0F0F0", "#C0C0C0", "#A9A9A9", "#707070", "#303030"],
behavior: [
"XX|CR:radiation%3|XX",
"CR:radiation%3|XX|CR:radiation%3",
"M2|M1 AND CR:radiation%3|M2",
],
}
elements.molten_radium = {
category: "states",
hidden: true,
tempLow: 700,
density: 5500,
stateLow: "radium",
color: ["#F0E0D6", "#D3B29E", "#B78473", "#A0534A", "#FFB300", "#F05945"],
behavior: [
"XX|CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3|XX",
"M2 AND CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3|XX|M2 AND CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3",
"M1|M1 AND CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3|M1",
],
}
elements.rutherfordium = {
category: "powders",
state: "solid",
tempHigh: 2100,
stateHigh: "molten_rutherfordium",
density: 17000,
color: ["#C0C0C0", "#B3B3B3", "#A6A6A6", "#8C8C8C", "#737373"],
behavior: [
"XX|CR:radiation%5 AND CR:fallout%0.3|XX",
"CR:radiation%5 AND CR:fallout%0.3|XX|CR:radiation%5 AND CR:fallout%0.3",
"M2|M1 AND CR:radiation%5 AND CR:fallout%0.3|M2",
],
}
elements.molten_rutherfordium = {
category: "states",
state: "liquid",
hidden: true,
tempLow: 2100,
stateLow: "rutherfordium",
density: 17000,
}
elements.dubnium = {
category: "solids",
state: "solid",
density: 21600,
color: ["#495057", "#dee2e6", "#ced4da", "#a61e4d"],
behavior: [
"XX|CR:radiation%1|XX",
"CR:radiation%1|XX|CR:radiation%1",
"XX|CR:radiation%1|XX",
],
}
elements.seaborgium = {
category: "solids",
state: "solid",
density: 23500,
color: ["#ced4da", "#adb5bd", "#868e96", "#339af0", "#4dabf7", "#4263eb", "#3b5bdb", "#1864ab"],
behavior: [
"XX|CR:radiation%1|XX",
"CR:radiation%1|XX|CR:radiation%1",
"XX|CR:radiation%1|XX",
],
}

View File

@ -0,0 +1,32 @@
elements.scissor = {
color: ["#CCCCCC","#999999","#808080","#71797E"],
category: "weapons",
behavior: behaviors.STURDYPOWDER,
state: "solid",
density: 7850,
tempHigh: 1455.5,
stateHigh: "molten_steel",
reactions: {
"rock": { elem1:null },
"paper": { elem2:null },
"head": { elem2:["blood","meat"], chance:0.005 },
"body": { elem2:["blood","meat"], chance:0.005 },
},
hardness: 0.75,
conduct: 0.32,
}
elements.rock.reactions = {
"fly": { elem2:"dead_bug", chance:0.25, oneway:true },
"firefly": { elem2:"dead_bug", chance:0.2, oneway:true },
"stink_bug": { elem2:"dead_bug", chance:0.15, oneway:true },
"bee": { elem2:"dead_bug", chance:0.1, oneway:true },
"bird": { elem2:"feather", chance:0.025, oneway:true },
"egg": { elem2:"yolk", oneway:true },
"bone": { elem2:"oil", tempMin:300, chance:0.005, oneway:true },
"dead_plant": { elem2:"charcoal", tempMin:200, chance:0.005, oneway:true },
"charcoal": { elem2:"diamond", tempMin:800, tempMax:900, chance:0.005, oneway:true },
"sand": { elem2:"packed_sand", tempMin:500, chance:0.005, oneway:true },
"wet_sand": { elem2:"packed_sand", chance:0.005, oneway:true },
"paper": { elem1:null },
}

715
mods/spouts.js Normal file
View File

@ -0,0 +1,715 @@
elements.salt_water_spout = {
category: "spouts",
state: "solid",
color: "#4d85ff",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:salt_water|XX",
"CR:salt_water|XX|CR:salt_water",
"XX|CR:salt_water|XX",
],
}
elements.sugar_water_spout = {
category: "spouts",
state: "solid",
color: "#8eaae6",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:sugar_water|XX",
"CR:sugar_water|XX|CR:sugar_water",
"XX|CR:sugar_water|XX",
],
}
elements.seltzer_spout = {
category: "spouts",
state: "solid",
color: ["#8eaae6","#82a4ed","#b5c5e8","#8eaae6","#82a4ed"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:seltzer|XX",
"CR:seltzer|XX|CR:seltzer",
"XX|CR:seltzer|XX",
],
}
elements.dirty_water_spout = {
category: "spouts",
state: "solid",
color: ["#0e824e","#07755a","#0c6934"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:dirty_water|XX",
"CR:dirty_water|XX|CR:dirty_water",
"XX|CR:dirty_water|XX",
],
}
elements.pool_water_spout = {
category: "spouts",
state: "solid",
color: "#a8d2e3",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:pool_water_spout|XX",
"CR:pool_water_spout|XX|CR:pool_water_spout",
"XX|CR:pool_water_spout|XX",
],
}
elements.slush_spout = {
category: "spouts",
state: "solid",
color: "#81bcd4",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:slush|XX",
"CR:slush|XX|CR:slush",
"XX|CR:slush|XX",
],
}
elements.magma_spout = {
category: "spouts",
state: "solid",
color: ["#ff6f00","#ff8c00","#ff4d00"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:magma|XX",
"CR:magma|XX|CR:magma",
"XX|CR:magma|XX",
],
}
elements.slime_spout = {
category: "spouts",
state: "solid",
color: "#81cf63",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:slime|XX",
"CR:slime|XX|CR:slime",
"XX|CR:slime|XX",
],
}
elements.cement_spout = {
category: "spouts",
state: "solid",
color: "#b5b5b5",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:cement|XX",
"CR:cement|XX|CR:cement",
"XX|CR:cement|XX",
],
}
elements.oil_spout = {
category: "spouts",
state: "solid",
color: "#470e00",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:oil|XX",
"CR:oil|XX|CR:oil",
"XX|CR:oil|XX",
],
}
elements.lamp_oil_spout = {
category: "spouts",
state: "solid",
color: "#b3b38b",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:lamp_oil|XX",
"CR:lamp_oil|XX|CR:lamp_oil",
"XX|CR:lamp_oil|XX",
],
}
elements.foam_spout = {
category: "spouts",
state: "solid",
color: "#cad2e3",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:foam|XX",
"CR:foam|XX|CR:foam",
"XX|CR:foam|XX",
],
}
elements.acid_spout = {
category: "spouts",
state: "solid",
color: ["#b5cf91","#a1ff5e","#288f2a"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:acid|XX",
"CR:acid|XX|CR:acid",
"XX|CR:acid|XX",
],
}
elements.neutral_acid_spout = {
category: "spouts",
state: "solid",
color: ["#c8d9b0","#c1d9b0","#b8dbb9"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:neutral_acid|XX",
"CR:neutral_acid|XX|CR:neutral_acid",
"XX|CR:neutral_acid|XX",
],
}
elements.glue_spout = {
category: "spouts",
state: "solid",
color: "#f0f0f0",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:glue|XX",
"CR:glue|XX|CR:glue",
"XX|CR:glue|XX",
],
}
elements.soda_spout = {
category: "spouts",
state: "solid",
color: "#422016",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:soda|XX",
"CR:soda|XX|CR:soda",
"XX|CR:soda|XX",
],
}
elements.melted_wax_spout = {
category: "spouts",
state: "solid",
color: "#d4c196",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:melted_wax|XX",
"CR:melted_wax|XX|CR:melted_wax",
"XX|CR:melted_wax|XX",
],
}
elements.juice_spout = {
category: "spouts",
state: "solid",
color: "#f0bf3d",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:juice|XX",
"CR:juice|XX|CR:juice",
"XX|CR:juice|XX",
],
}
elements.milk_spout = {
category: "spouts",
state: "solid",
color: "#fafafa",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:milk|XX",
"CR:milk|XX|CR:milk",
"XX|CR:milk|XX",
],
}
elements.chocolate_milk_spout = {
category: "spouts",
state: "solid",
color: "#664934",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:chocolate_milk|XX",
"CR:chocolate_milk|XX|CR:chocolate_milk",
"XX|CR:chocolate_milk|XX",
],
}
elements.fruit_milk_spout = {
category: "spouts",
state: "solid",
color: "#c9988f",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:fruit_milk|XX",
"CR:fruit_milk|XX|CR:fruit_milk",
"XX|CR:fruit_milk|XX",
],
}
elements.pilk_spout = {
category: "spouts",
state: "solid",
color: "#e9cba3",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:pilk|XX",
"CR:pilk|XX|CR:pilk",
"XX|CR:pilk|XX",
],
}
elements.eggnog_spout = {
category: "spouts",
state: "solid",
color: "#ddbf98",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:eggnog|XX",
"CR:eggnog|XX|CR:eggnog",
"XX|CR:eggnog|XX",
],
}
elements.cream_spout = {
category: "spouts",
state: "solid",
color: "#f7f7f7",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:cream|XX",
"CR:cream|XX|CR:cream",
"XX|CR:cream|XX",
],
}
elements.cream_spout = {
category: "spouts",
state: "solid",
color: "#f7f7f7",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:cream|XX",
"CR:cream|XX|CR:cream",
"XX|CR:cream|XX",
],
}
elements.nut_milk_spout = {
category: "spouts",
state: "solid",
color: "#D7D1C3",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:nut_milk|XX",
"CR:nut_milk|XX|CR:nut_milk",
"XX|CR:nut_milk|XX",
],
}
elements.vinegar_spout = {
category: "spouts",
state: "solid",
color: "#ffecb3",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:vinegar|XX",
"CR:vinegar|XX|CR:vinegar",
"XX|CR:vinegar|XX",
],
}
elements.alcohol_spout = {
category: "spouts",
state: "solid",
color: "#c9c5b1",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:alcohol|XX",
"CR:alcohol|XX|CR:alcohol",
"XX|CR:alcohol|XX",
],
}
elements.soap_spout = {
category: "spouts",
state: "solid",
color: "#f2f2f2",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:soap|XX",
"CR:soap|XX|CR:soap",
"XX|CR:soap|XX",
],
}
elements.bleach_spout = {
category: "spouts",
state: "solid",
color: "#ffffff",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:bleach|XX",
"CR:bleach|XX|CR:bleach",
"XX|CR:bleach|XX",
],
}
elements.ink_spout = {
category: "spouts",
state: "solid",
color: "#171717",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:ink|XX",
"CR:ink|XX|CR:ink",
"XX|CR:ink|XX",
],
}
elements.mercury_spout = {
category: "spouts",
state: "solid",
color: ["#53574b","#65686a"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:mercury|XX",
"CR:mercury|XX|CR:mercury",
"XX|CR:mercury|XX",
],
}
elements.blood_spout = {
category: "spouts",
state: "solid",
color: ["#ff0000","#ee0000"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:blood|XX",
"CR:blood|XX|CR:blood",
"XX|CR:blood|XX",
],
}
elements.vaccine_spout = {
category: "spouts",
state: "solid",
color: "#e0d0ad",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:vaccine|XX",
"CR:vaccine|XX|CR:vaccine",
"XX|CR:vaccine|XX",
],
}
elements.antibody_spout = {
category: "spouts",
state: "solid",
color: "#ff4040",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:antibody|XX",
"CR:antibody|XX|CR:antibody",
"XX|CR:antibody|XX",
],
}
elements.infection_spout = {
category: "spouts",
state: "solid",
color: ["#cf005d","#be004c"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:infection|XX",
"CR:infection|XX|CR:infection",
"XX|CR:infection|XX",
],
}
elements.poison_spout = {
category: "spouts",
state: "solid",
color: "#00ff00",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:poison|XX",
"CR:poison|XX|CR:poison",
"XX|CR:poison|XX",
],
}
elements.antidote_spout = {
category: "spouts",
state: "solid",
color: "#c9b836",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:antidote|XX",
"CR:antidote|XX|CR:antidote",
"XX|CR:antidote|XX",
],
}
elements.tea_spout = {
category: "spouts",
state: "solid",
color: "#6c4317",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:tea|XX",
"CR:tea|XX|CR:tea",
"XX|CR:tea|XX",
],
}
elements.coffee_spout = {
category: "spouts",
state: "solid",
color: "#24100b",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:coffee|XX",
"CR:coffee|XX|CR:coffee",
"XX|CR:coffee|XX",
],
}
elements.honey_spout = {
category: "spouts",
state: "solid",
color: ["#f6ce1a","#e79001","#bb5503"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:honey|XX",
"CR:honey|XX|CR:honey",
"XX|CR:honey|XX",
],
}
elements.sap_spout = {
category: "spouts",
state: "solid",
color: ["#b67f18","#c86305","#cf7a19","#e4ae3a"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:sap|XX",
"CR:sap|XX|CR:sap",
"XX|CR:sap|XX",
],
}
elements.caramel_spout = {
category: "spouts",
state: "solid",
color: "#e89a51",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:caramel|XX",
"CR:caramel|XX|CR:caramel",
"XX|CR:caramel|XX",
],
}
elements.molasses_spout = {
category: "spouts",
state: "solid",
color: ["#210c06","#170804"],
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:molasses|XX",
"CR:molasses|XX|CR:molasses",
"XX|CR:molasses|XX",
],
}
elements.ketchup_spout = {
category: "spouts",
state: "solid",
color: "#ff3119",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:ketchup|XX",
"CR:ketchup|XX|CR:ketchup",
"XX|CR:ketchup|XX",
],
}
elements.mayo_spout = {
category: "spouts",
state: "solid",
color: "#fcffbd",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:mayo|XX",
"CR:mayo|XX|CR:mayo",
"XX|CR:mayo|XX",
],
}
elements.grease_spout = {
category: "spouts",
state: "solid",
color: "#cf9251",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:grease|XX",
"CR:grease|XX|CR:grease",
"XX|CR:grease|XX",
],
}
elements.liquid_oxygen_spout = {
category: "spouts",
state: "solid",
color: "#00ad99",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
temp: -184,
behavior: [
"XX|CR:liquid_oxygen|XX",
"CR:liquid_oxygen|XX|CR:liquid_oxygen",
"XX|CR:liquid_oxygen|XX",
],
}
elements.liquid_hydrogen_spout = {
category: "spouts",
state: "solid",
color: "#97afcf",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
temp: -254,
behavior: [
"XX|CR:liquid_hydrogen|XX",
"CR:liquid_hydrogen|XX|CR:liquid_hydrogen",
"XX|CR:liquid_hydrogen|XX",
],
}
elements.perfume_spout = {
category: "spouts",
state: "solid",
color: "#9656e3",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:perfume|XX",
"CR:perfume|XX|CR:perfume",
"XX|CR:perfume|XX",
],
}
elements.cyanide_spout = {
category: "spouts",
state: "solid",
color: "#b6ccb6",
tempHigh: 1455.5,
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
"XX|CR:cyanide|XX",
"CR:cyanide|XX|CR:cyanide",
"XX|CR:cyanide|XX",
],
}

91
mods/tech.js Normal file
View File

@ -0,0 +1,91 @@
elements.monitor_case = {
color: "#4a4848",
behavior: behaviors.SOLID,
category: "tech",
state: "solid",
density: 500,
};
elements.pc_core = {
color: "#f0cd43",
behavior: [
"XX|SH|XX",
"SH|XX|SH",
"XX|SH|XX",
],
category: "tech",
tempHigh: 8000,
stateHigh: ["molten_steel","explosion","molten_iron"],
reactions: {
"poison": { elem1: "malfunctioned_wire", elem2: "null" },
"salt_water": { elem1: "malfunctioned_wire", elem2: "null" },
"water": { elem1: "explosion", elem2: "null" },
"malware": { elem1: "null", elem2: "null" },
},
breakInto: ["rust", "electrogalvanized"],
};
elements.malfunctioned_wire = {
color: "#6d32a8",
behavior: behaviors.WALL,
category: "tech",
conduct: 999,
noMix: true
};
elements.red_wire = {
color: "#ff3d1f",
behavior: behaviors.WALL,
category: "tech",
insulate: true,
conduct: 1,
noMix: true,
reactions: {
"acid": { elem1: "malfunctioned_wire", elem2: "null" },
"poison": { elem1: "malfunctioned_wire", elem2: "null" },
"salt_water": { elem1: "malfunctioned_wire", elem2: "null" },
"water": { elem1: "malfunctioned_wire", elem2: "null" },
},
breakInto: ["plastic", "copper"],
};
elements.green_wire = {
color: "#66c22d",
behavior: behaviors.WALL,
category: "tech",
insulate: true,
conduct: 1,
noMix: true,
reactions: {
"acid": { elem1: "malfunctioned_wire", elem2: "null" },
"poison": { elem1: "malfunctioned_wire", elem2: "null" },
"salt_water": { elem1: "malfunctioned_wire", elem2: "null" },
"water": { elem1: "malfunctioned_wire", elem2: "null" },
},
breakInto: ["plastic", "copper"],
};
elements.blue_wire = {
color: "#1f81cc",
behavior: behaviors.WALL,
category: "tech",
insulate: true,
conduct: 1,
noMix: true,
reactions: {
"acid": { elem1: "malfunctioned_wire", elem2: "null" },
"poison": { elem1: "malfunctioned_wire", elem2: "null" },
"water": { elem1: "malfunctioned_wire", elem2: "null" },
"salt_water": { elem1: "malfunctioned_wire", elem2: "null" },
},
breakInto: ["plastic", "copper"],
};
elements.electrogalvanized = {
color: "#6c6e70",
behavior: behaviors.WALL,
category: "tech",
state: "solid",
conduct: 2,
density: 7850,
};

63
mods/the_snail.js Normal file
View File

@ -0,0 +1,63 @@
elements.the_snail = {
color: "#5c3104",
behavior: [
"XX|XX|XX",
"XX|FX%0.25|M2%0.5 AND BO",
"XX|M1|XX",
],
reactions: {
"salt": { elem1: "quicklime", elem2: null },
"dirty_water": { elem2:"water", chance:0.05, func:behaviors.FEEDPIXEL },
"broth": { elem2:"water", chance:0.05, func:behaviors.FEEDPIXEL },
"tea": { elem2:"water", chance:0.05, func:behaviors.FEEDPIXEL },
"plant": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"evergreen": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"cactus": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"dead_plant": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"worm": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL },
"mushroom_spore": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"grass": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"herb": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"lettuce": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"grass_seed": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"algae": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"mushroom_cap": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"mushroom_stalk": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"mushroom_gill": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"lichen": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"hyphae": { elem2:"dirt", chance:0.05, func:behaviors.FEEDPIXEL },
"mycelium": { elem2:"dirt", chance:0.05, func:behaviors.FEEDPIXEL },
"pumpkin": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL },
"calcium": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL },
"limestone": { elem2:null, chance:0.001, func:behaviors.FEEDPIXEL },
"quicklime": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL },
"slaked_lime": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL },
"paper": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL },
"pickle": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"grape": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL },
"body": { elem1:"crasher" },
"head": { elem1:"crasher" },
},
category: "special",
state: "solid",
hardness: 1,
conduct: 0.16,
alias: "The Immortal Snail",
};
elements.crasher = {
onSelect: function() {
logMessage("WARNING: DO NOT PLACE THIS! This WILL crash your game and is only used for the immortal snail.");
},
color: "#FFFFFF",
behavior: [
"XX|CL|XX",
"CL|EX:10000000000>flash|CL",
"XX|CL|XX",
],
category: "special",
insulate: true,
hardness: 1,
noMix: true,
hidden: true,
};

View File

@ -469,7 +469,7 @@ button, input { /*Disable double tap zoom on mobile devices*/
touch-action: manipulation;
color-scheme: dark;
}
select, .toggleInput, #settingsMenu input[type="number"], #settingsMenu input[type="text"], #savePromptMenu input {
select, .toggleInput, #settingsMenu input[type="number"], #settingsMenu input[type="text"], #savePromptMenu input, input[type="email"] {
background-color: black;
vertical-align: middle;
margin-left: 5px;