From 904122e4afadb7de9b27bde6d4ddcc0e802cd489 Mon Sep 17 00:00:00 2001
From: DoobieRalsei <163950752+DoobieRalsei@users.noreply.github.com>
Date: Thu, 9 May 2024 09:26:52 -0700
Subject: [PATCH 01/23] True skin infection
---
mods/scp.js | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/mods/scp.js b/mods/scp.js
index db998d13..9dd1828b 100644
--- a/mods/scp.js
+++ b/mods/scp.js
@@ -58,6 +58,8 @@ elements.SCP_008 = {
reactions: {
"head": { elem1:null, elem2:"z_head" , chance:0.5 },
"body": { elem1:null, elem2:"z_body" , chance:0.5 },
+ "skin": { elem1:null, elem2: ["infected_skin","infected_skin","infected_meat"] , chance:0.3 },
+ "blood": { elem1:null, elem2:"infection" , chance:0.6 },
"meat": { elem1:null, elem2:"infected_meat" , chance:0.4 },
"rotten_meat": { elem1:null, elem2:"infected_meat" , chance:0.5 },
"frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.3 },
@@ -89,6 +91,8 @@ elements.frozen_008 = {
reactions: {
"head": { elem1:null, elem2:"z_head" , chance:0.4 },
"body": { elem1:null, elem2:"z_body" , chance:0.4 },
+ "skin": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 },
+ "blood": { elem1:null, elem2:"infection" , chance:0.6 },
"meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 },
"rotten_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.5 },
"frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 },
@@ -108,9 +112,9 @@ elements.infected_skin = {
color: ["#11111f","#75816B","#4D6B53"],
singleColor: true,
behavior: [
- "XX|CR:stench,stench,stench,SCP_008,fly%0.15 AND CH:skin,meat>infected_skin,infected_meat%1|XX",
- "CH:skin,meat>infected_skin,infected_meat%1|XX|CH:skin,meat>infected_skin,infected_meat%1",
- "XX|CH:skin,meat>infected_skin,infected_meat%1|XX",
+ "XX|CR:stench,stench,stench,SCP_008,fly%0.05 AND CH:meat>infected_meat%1|XX",
+ "CH:meat>infected_meat%1|XX|CH:meat>infected_meat%1",
+ "XX|CH:meat>infected_meat%1|XX",
],
tick: function(pixel) {
if (pixel.temp > 40 && Math.random() < 0.003) {
@@ -136,6 +140,12 @@ elements.infected_skin = {
pixel2.color = pixelColorPick(pixel2,RGBToHex(pixel1.color.match(/\d+/g)))
if (pixel1.origColor) { pixel2.origColor = pixel1.origColor }
} },
+ "skin": { chance:0.01, func:function(pixel1,pixel2){
+ changePixel(pixel2,"infected_skin");
+ pixel2.color = pixelColorPick(pixel2,RGBToHex(pixel1.color.match(/\d+/g)))
+ if (pixel1.origColor) { pixel2.origColor = pixel1.origColor }
+ } },
+ "blood": { elem2:"infection" , chance:0.6 },
"acid": { elem1:"infection" },
"soap": { elem1:null, elem2:null, chance:0.005 },
"light": { stain1:"#825043" },
@@ -180,6 +190,8 @@ elements.infected_meat = {
"dirty_water": { elem2:"broth", tempMin:70, color2:"#d7db69" },
"seltzer": { elem2:"dirty_water" },
"fly": { elem1: [null,null,"SCP_008"] , elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2},
+ "blood": { elem2:"infection" , chance:0.6 },
+ "skin": { elem2:"infected_skin" , chance:0.6 },
},
tempHigh: 300,
stateHigh: ["SCP_008","ash","ammonia"],
@@ -209,6 +221,7 @@ elements.frozen_infected_meat = {
"sugar_water": { elem2:"dirty_water" },
"seltzer": { elem2:"dirty_water" },
"fly": { elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2},
+ "blood": { elem2:"infection" , chance:0.6 },
},
temp: -20,
tempHigh: 10,
From 03ea71c39e444ae2d978e0ae3129c7b796dac476 Mon Sep 17 00:00:00 2001
From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com>
Date: Thu, 9 May 2024 18:15:54 -0500
Subject: [PATCH 02/23] Add files via upload
---
mods/Natural_disasters.js | 207 ++++++++++++++++++++++++++++++++++++++
1 file changed, 207 insertions(+)
create mode 100644 mods/Natural_disasters.js
diff --git a/mods/Natural_disasters.js b/mods/Natural_disasters.js
new file mode 100644
index 00000000..259efd8e
--- /dev/null
+++ b/mods/Natural_disasters.js
@@ -0,0 +1,207 @@
+//mod made by imilkflamingos
+
+
+function countNeighbors(pixel,target){
+ var targeted = 0;
+ for (var i = 0; i < squareCoords.length; i++) {
+ var coord = squareCoords[i];
+ var x = pixel.x+coord[0];
+ var y = pixel.y+coord[1];
+ if (!isEmpty(x,y, true)) {
+ var otherPixel = pixelMap[x][y];
+ if (otherPixel.element == target){
+ targeted = targeted + 1
+ }
+ }
+ }
+ return targeted;
+}
+
+//made by Fioushemastor
+function getDistance(x1, y1, x2, y2) {
+ return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
+ }
+
+ function getNearestPixel( posX,posY, targetElement) {
+ let nearestPixel
+ let minDistance = Infinity
+
+ //the stuff
+ for (let index in pixelMap) {
+ for (let pixel of pixelMap[index]) {
+ if (pixel == undefined) continue;
+ if (pixel.element == targetElement) {
+ let distance = getDistance(pixel.x, pixel.y, posX, posY);
+ if (distance < minDistance) {
+ minDistance = distance;
+ nearestPixel = pixel;
+ }
+ }
+ }
+ }
+ return nearestPixel
+ }
+// Rest made me
+
+function getRandomInt (min, max) {
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+function createEarthQuakeRand() {
+ const chance = Math.random();
+ if ( chance <= 0.005 ) {
+ var randY = getRandomInt(60,85)
+ var randX = getRandomInt(1,163)
+ if(isEmpty(randX,randY)) {
+ createPixel('earthquake',randX,randY)
+ }
+ else {
+ changePixel(pixelMap[randX][randY],'earthquake')
+ }
+ }
+
+}
+function createTsunamiRand(){
+ var randX = getRandomInt(1,163)
+ const ClosestPixel = getNearestPixel(randX,25,'water')
+ if(ClosestPixel) {
+ var neighbors = countNeighbors(ClosestPixel,'water')
+ if (isEmpty(ClosestPixel.x,ClosestPixel.y-1)) {
+ const chance = Math.random();
+ if ( chance <= 0.001 && countNeighbors(ClosestPixel,'water') >= 3) {
+ createPixel('tsunami',ClosestPixel.x,ClosestPixel.y-1)
+ }
+ }
+ }
+
+}
+function createWildFireRand(){
+ var randX = getRandomInt(1,163)
+ const ClosestPixel = getNearestPixel(randX,25,'plant')
+ if(ClosestPixel) {
+ if (!isEmpty(ClosestPixel.x,ClosestPixel.y)) {
+ const chance = Math.random();
+ if ( chance <= 0.0005) {
+ ClosestPixel.burning = true;
+ }
+ }
+ }
+
+}
+function createMetorShower(){
+
+}
+
+function createCloud(pixel, type) {
+ for (let i = 0; i < 70; i++) {
+ if(isEmpty(pixel.x-i,pixel.y) ) {
+ createPixel(type,pixel.x-i,pixel.y, );
+ }
+ if(isEmpty(pixel.x+i,pixel.y) ) {
+ createPixel(type,pixel.x+i,pixel.y, );
+ }
+ if(isEmpty(pixel.x-i,pixel.y-1) ) {
+ createPixel(type,pixel.x-i,pixel.y-1, );
+ }
+ if(isEmpty(pixel.x+i,pixel.y-1) ) {
+ createPixel(type,pixel.x+i,pixel.y-1, );
+ }
+ if(isEmpty(pixel.x-i,pixel.y+1) ) {
+ createPixel(type,pixel.x-i,pixel.y+1, );
+ }
+ if(isEmpty(pixel.x+i,pixel.y+1) ) {
+ createPixel(type,pixel.x+i,pixel.y+1, );
+ }
+ i+1
+}
+}
+
+elements.Test_Element = {
+ hidden: true,
+ color: "#ff0000",
+ conduct: 0.1,
+ category:"test",
+ behavior: behaviors.WALL,
+
+ onSelect: function(pixel){},
+ tick: function(pixel) {
+
+ },
+
+};
+
+elements.Diaster_Spawner = {
+ maxSize : 1,
+ color: ["#8D8D8C", "#666666"],
+ category: "land",
+ behavior: behaviors.WALL,
+ properties : {
+ age: 0,
+
+ },
+ tick : function(pixel) {
+ const num = getRandomInt(1,3)
+ if (num == 1) {
+ createCloud(pixel, 'rain_cloud')
+ } else if(num == 2){
+ createCloud(pixel, 'thunder_cloud')
+ } else {
+ createCloud(pixel, 'tornado_cloud')
+ }
+
+ if(pixel.age > 100) {
+ changePixel(pixel,"cloud");
+ }
+ pixel.age++
+ doDefaults(pixel);
+ },
+
+};
+
+elements.tornado_cloud = {
+ color: ["#8D8D8C", "#666666"],
+ category: "land",
+ state : 'gas',
+ behavior: [
+ "XX|XX|XX",
+ "XX|DL%0.0001|M1%2.5 AND BO",
+ "XX|XX|XX",
+ ],
+ tick : function(pixel) {
+ const chance = Math.random();
+
+ if ( chance <= 0.00001) {
+ if(isEmpty(pixel.x,pixel.y+1)) {
+ changePixel(pixel,"tornado")
+ }
+ }
+
+ },
+ density: 0.4,
+ ignoreAir: true,
+ conduct: 0.03
+};
+
+
+
+function createCloudRand() {
+ const chance = Math.random();
+ var randY = getRandomInt(7,19)
+ if(chance <= 0.001) {
+ if( isEmpty(83,randY)){
+ createPixel('Diaster_Spawner',83,randY)
+ }
+ }
+}
+
+function runEvents(){
+ if(!paused) {
+ createEarthQuakeRand();
+ createTsunamiRand();
+ createCloudRand();
+ createWildFireRand();
+ }
+}
+
+runAfterLoad(function() {
+ RunSimInterval = window.setInterval(runEvents, 75);
+});
From f0a5fa192fccadb5a577e1deed253268b77384ef Mon Sep 17 00:00:00 2001
From: Jayd-Rubies <155784127+Jayd-Rubies@users.noreply.github.com>
Date: Thu, 9 May 2024 21:54:42 -0400
Subject: [PATCH 03/23] Update mod-list.html
---
mod-list.html | 83 ++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 72 insertions(+), 11 deletions(-)
diff --git a/mod-list.html b/mod-list.html
index b91092d2..22afd23f 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -104,21 +104,25 @@
| Official |
| alchemy.js | Start with only 4 elements and unlock more by reacting them together. (Most are not possible) | R74n |
+| classic_explosives.js | Adds back 4 explosives removed in v1.9.3 | R74n |
| classic_textures.js | Use textures from early versions of the game | R74n |
| color_everything.js | Allows every element to have a custom color | R74n |
-| devtests.js | Experimental features from the Sandboxels developer; Currently there is Earthquake in Weapons | R74n |
+| devtests.js | Experimental features from the Sandboxels developer | R74n |
| edible_everything.js | Allows every element to be mixed into Batter and Dough | R74n |
| fools.js | Adds back FOOLS Mode | R74n |
+| fools24.js | Adds back the 2024 Multiversal Update (v5.9.1) | R74n |
| smooth_water.js | Changes water mechanics so that it flows in one direction until it bounces off of something | R74n |
| spring.js | Many nature elements, like sakura trees, butterflies, beehives, and more | R74n |
+| survival.js | With limited resources, you must craft, sell, and buy to progress | R74n |
| velocity.js | Beta for explosion velocity, and later wind, which may come to the base game in the future | R74n |
| Tools & Settings |
-| adjustablepixelsize.js | Allows you to set the pixelSize with a URL parameter | Alice |
-| betaworldgen.js | adds a more advanced world generation to the game | Alex |
+
+| betaworldgen.js | adds a more advanced world generation to the game | Adora |
| betterModManager.js | Improvements to the Mod Manager | ggod |
| betterSettings.js | Adds additional settings and functionality | ggod |
| betterStats.js | Separate “real” and “set” TPS, meaning you can see what the TPS actually is, instead of only seeing what it’s set to | mollthecoder |
+| buildingreplicator.js | Scans and replicates builds anywhere on the screen, along with some preset submitted builds | nousernamefound |
| change.js | Adds a tool that only replaces existing pixels | Alice |
| color_tools.js | Adds tools that manipulate colors | Alice |
| controllable_pixel_test.js | Adds a pixel that can be controlled with the keyboard keys. Read the commit description for more info. [PC ONLY] | Alice |
@@ -127,11 +131,15 @@
| delete_all_of_element.js | Adds a tool that deletes every pixel of the element(s) the user clicks on | Alice |
| descriptions.js | Adds descriptions to the info page and tooltips of elements | mollthecoder |
| editTools.js | Selections, Copying, Pasting, Cutting, Shapes, and more! | ggod |
+| elementEraser.js | Adds a tool that deletes only desired element | SquareScreamYT |
| elementsManager.js | Create and edit custom elements | ggod |
| evenmoretemptools.js | Adds different temperature-modifying tools (±350/tick, NaN, and Infinity) | Alice |
| extra_element_info.js | Adds descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanilla | Melecie |
| find.js | Adds a find mode that highlights a chosen element as pulsating red and yellow (read commit description) | Alice |
+| jaydsfunctions.js | Adds extra tools |
| insane_random_events.js | Massively buffs random events | Alice |
+| invertscroll.js | Inverts the scroll wheel for adjusting brush size | SquareScreamYT |
+| mobile_shift.js | Adds a button for shift on mobile | SquareScreamYT |
| moretools.js | Adds more temperature-modifying tools (±10/tick, ±50/tick, and absolute zero tools) | Sightnado |
| move_tools.js | Adds tools that move pixels | Alice |
| noconfirm.js | Removes all confirmation pop ups | mollthecoder |
@@ -142,12 +150,16 @@
| replace_all.js | Adds a way to replace every pixel of an element with another element Read the commit description for usage | Alice |
| replace.js | Adds a tool that replaces every pixel of a specified element with another specified element. (The prompt to specify these is toggled by pressing " or by the button in the element description) | Alice |
| save_loading.js | Adds the ability to save and load scenes from files (See the info page of the element) | Alice |
+| selective_paint.js | Adds a tool to paint only selected elements | SquareScreamYT |
| stripe_paint.js | Adds a tool to paint with stripes | Alice |
+| texturepack.js | Adds tools that let you create and share custom texture packs | nousernamefound |
| the_ground.js | Adds several rock types, worldgen settings, and gemstones | Alice |
| Science & Chemistry |
| alcohol.js | Adds methanol, (iso-)propanol, and butanol | Alice |
| alkahest.js | Adds the alkahest, a liquid which dissolves anything | Alice |
+| aScientistsWish.js | Adds things that related to science, especially radiation | Carbon Monoxide, salmonfishy |
+| bettermetalscrap.js | Allows metal scrap to be melted back into its original material | nousernamefound |
| bigger_star_spawners.js | Adds spawners for larger stars | Alice |
| bioooze_and_pyrogens.js | Adds Bio-Ooze from Frackin’ Universe and several heat-producing materials from various games’ mods | Alice |
| boiling_things.js | Allows for various elements to be vaporized | Alice |
@@ -159,17 +171,22 @@
| Gemstones.js | Adds more gemstones | Schweeny |
| glenn_gases.js | Adds most gases from the Glenn's Gases mod into Sandboxels | Alice |
| grav_mudstones.js | Adds various forms of mudstone with different gravities | Alice |
+| halogen.js | Adds the missing halogens | nousernamefound |
| hidden_ground.js | Hides most rock variants from the_ground.js excluding the base rocks and walls | Melecie |
| iocalfaeus_clones.js | Adds Iorefrius, Iolucius, and Ioradius gas | Alice |
+| jaydstuff.js | Adds various chemicals and compounds | Jayd |
| laetium.js | Adds several fictional elements | Alice |
| liquid_energy.js | Adds liquid versions of the elements in the Energy category | Alice |
| metals.js | Adds several metals | Alice |
| mixture.js | Allows many chemicals to be mixed | lllllllllwith10ls |
-| morechemistry.js | Adds many new chemicals and compounds as well as some new machines | Alex |
+| more_gold.js | Adds Green Gold | pixelegend4 |
+| morechemistry.js | Adds many new chemicals and compounds as well as some new machines | Adora |
| moreliquids.js | Adds various liquids | te-agma-at |
| nellfire.js | Adds a weird transforming flame and several rock types | Alice |
| Neutronium Mod.js | Variety of scientific elements Explosions | StellarX20 |
| neutronium_compressor.js | Adds a compressor (in reference to Minecraft’s Avaritia mod) that compresses 10,000 pixels of an element into a “singularity” | Alice |
+| noblegas.js | Adds the missing noble gases | nousernamefound |
+| radioactive.js | Adds every radioactive elements on the periodic table (WIP) | kaeud |
| random_rocks.js | Randomly generates rocks on game load | Alice |
| roseyiede.js | Adds several variants of a substance called roseyiede | Alice |
| some_tf_liquids.js | Adds various liquids from the Thermal Foundation Minecraft mod | Alice |
@@ -177,89 +194,133 @@
| Machines & Technology |
| clone_liquid.js | Adds a liquid form of cloner | Alice |
+| combustion.js | Adds components necessary for combustion engines | uptzik |
| conveyance.js | Conveyors, operated with and without electricity | Melecie |
+| ExtraMachines.js | Adds sensors, energy resources, materials, and more | Mecoolnotcool |
+| fine_tuned_cloner.js | Adds a cloner that can spawn at different rates and prevent unwated cloning | BatteRaquette58 |
| flipflop.js | Toggleable switches; Explanation | Flix |
| gameOfLife.js | Conway's Game of Life on a screen | ggod |
+| logicgates.js | Adds predictable electricity and logic gates | nousernamefound |
| note_block.js | Adds musical Note Blocks | Alice |
| nousersthings.js | Destroyable machines, pipe variants, filters, and more | nousernamefound |
| portal.js | Adds portals that can teleport pixels | Alice |
+| pullers.js | Adds pixels that pull pixels towards them | voidapex11 |
| pushers.js | Adds pixels that push elements away from them | Alice |
-| spouts.js | Adds spouts for all liquids | Alice |
+| spouts.js | Adds spouts for all liquids | kaeud |
| state_voids.js | Adds several elements that each delete a specific state of matter (and combinations thereof) | Alice |
| switches.js | Adds electrical switches that can be toggled | Alice |
| ticking_temp_stuff.js | Adds more heaters and coolers | Alice |
+| video.js | Adds a video player | ggod |
| waterspout.js | Adds back the old Water Spout | mollthecoder |
+| WhisperingTheory.js | Adds many more variants of heater and cooler | kaeud |
| Weapons |
+| aircrafts.js | Adds aircraft and aircraft part pixels | Jayd |
| icb.js | Adds various levels of nested cluster bombs | Alice |
| life_eater.js | Adds Warhammer 40,000’s Life-Eater Virus and Virus Bombs | Alice |
| liquid_void.js | Adds a liquid variant of Void | Alice |
| more_breaking.js | Allows for breaking more elements in explosions | Alice |
| rays.js | Adds more Ray types | Alice |
+| rays++.js | Adds a couple more rays | uptzik |
+| weapons.js | Adds varieties of different weapons | Jayd |
| Food & Cooking |
+| aChefsDream.js | Adds more foods, animals, tools and many other cooking related items. Updates can be found in this YouTube Playlist | SquareScreamYT |
+| aChefsDream_beta.js | Beta testing for aChefsDream. The code can be found on GitHub | SquareScreamYT |
| bananas.js | Adds bananas and banana plants | Alice |
+| CherrySoda.js | Adds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda. | guzzo86 |
+| community_desserts.js | Adds various desserts from community suggestions | Tisquares |
+| greenitemsandmore.js | Adds various green things, including apples and more food | zonneschijn7 |
| ketchup_mod.js | Adds a bunch of ketchup related stuff, plus a few other condiments | Nubo318 (main dev), Devi, Alice (contributors) |
+| lemonade.js | Adds lemons and lemonade | personman / baconthemyth |
+| morefoodsmod.js | Adds more foods | Clide4 |
| pizzasstuff.js | New animals, foods, and plants | _ilikepizza_ |
-| sbstuff.js | Adds Rice | Stefan Blox |
+| potato_chips.js | Potato chips. | guzzo86 |
+| sbstuff.js | Adds many foods | stefanblox |
+| soups.js | Adds seasoning and soup | pixelegend4 |
+| weAllScreamFor.js | Adds ice cream toppings | rottenEgghead |
| Life & Nature |
+| advanced_colonies.js | Adds davlers, creatures with complex colonies | DaviStudios |
| apioforms_pre.js | An incomplete implementation of elements from the Apioform Game | Alice |
| bacteria_mod.js | Adds content from the Bacterium Mod: (Bacteria, Replacer B., Jammer Block) | Alice |
| bananas.js | Adds bananas and banana plants | Alice |
+| cat.js | Adds cats and cat food | SquareScreamYT |
| cells.js | Adds several experimental edits of the Cell element | Alice |
| crimson.js | Adds elements relating to the Crimson from Terraria | Alice |
+| dogs.js | Adds a simple dog and dog food | hedera-ivy |
| fairy_chain.js | Adds way too many fairies to fey_and_more.js | Alice |
| fantastic_creatures.js | Adds various animals | Melecie |
| fantasy_elements.js | Fantasy creatures and substances | pixelegend4 |
| fey_and_more.js | Adds fairies, magic, and a lot of other things | Melecie |
+| flowers_and_forests.js | adds trees and flowers and things to do with nature | pixelegend4 and SquareScreamYT |
| fwibblen.js | Adds a flying creature that turns nickel into itself, and a second creature that does the same to the first one | Alice |
| human_edit.js | Improvements to humans | Alice |
+| kopalstuff.js | Adds creatures, spirits, DNA, foods, and more | DaviStudios |
+| lost_souls.js | Adds souls and related elements, the mod can also be found on Github | pixelegend4, SquareScreamYT, salmonfishy |
| miscible_psoup_and_birthpool.js | Makes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical Menagerie | Alice |
| mobs.js | Adds Creepers, Zombies, and Skeletons | Alice |
| nocancer.js | Removes cancer from the game one tick after it is created | mollthecoder |
| nocancer2.js | Removes cancer from the game altogether. May be incompatible with other mods that spawn cancer | mollthecoder |
+| nograssgrow.js | Prevents Grass from growing | mollthecoder |
+| ocean.js | Adds many Marine life | SquareScreamYT |
| pizzasstuff.js | New animals, foods, and plants | _ilikepizza_ |
+| plants.js | Adds a wide variety of new plants and fruits | Adora |
| primordial_birthpool.js | A cross between Primordial Soup and Birthpool. Requires F&M | Alice |
| spring.js | Many nature elements, like sakura trees, butterflies, beehives, and more | R74n |
| the_ground_og.js | Simplified and more stable version of the_ground.js | Alice |
| the_ground.js | Adds several rock types, worldgen settings, and gemstones | Alice |
| toothpaste.js | Teeth and paste | Alice |
+| volcanic_expansion.js | Adds Obsidian, Pumice, and Andesite rocks | Jayd |
| Fun & Games |
-| allliquids.js | Made all elements liquids | Alex |
+| 10kelements.js | Inserts a customizable amount of randomly generated elements into the game | nousernamefound |
+| all_around_fillers.js | Adds directional Filler variants | idk73248 |
+| allliquids.js | Made all elements liquids | Adora |
| amogus.js | Adds a small amogus structure | Alice |
+| citybuilding.js | Adds seeds that create miniature buildings and other city-related items | SquareScreamYT |
+| collab_mod.js | Created by multiple people, adds random things | mrapple, ilikepizza, stefanblox |
+| Doom Mod (Unreleased) | As seen on TikTok - Not yet available! | ggod |
| elem3.js | Adds all elements and combinations from Elemental 3 [Very Large] | Sophie |
+| fools+.js | improves and makes fools.js EXTREMELY annoying. | SquareScreamYT |
| funny elements 2022-11-15.js | Adds a few curated randomly-generated elements | Alice |
-| funny_liquid_2.js | Adds urine | Alice |
-| funny_liquid_3.js | Adds vomit | Alice |
| funny_solid.js | Adds feces | Alice |
| haseulite.js | Adds Loona-related materials with various properties | Alice |
-| iean.js | Adds lean and its ingredients | Alice |
| lactose_intolerance_and_celiac.js | Makes humans explode on contact with milk, wheat, bread, or toast | Nubo318 |
| lone_urea.js | Adds urea without the rest of the piss mod | Alice |
+| maze.js | Adds a solvable maze generator | ggod |
| memelists.js | Makes it so you must select elements through a list at the bottom of the page. We like lists | mollthecoder |
| minecraft.js | Adds several things from Minecraft | StellarX20 |
| minesweeper.js | A subpar implementation of Minesweeper | Alice |
| musicalfruit.js | Humans get gas from eating Beans | mollthecoder |
| random_elems.js | Curated randomly generated elements | Alice |
| random_liquids.js | Randomly generates liquids on game load | Alice |
+| sbmixup.js | Adds silly elements from a Mix-Up! game | stefanblox |
+
| star_wars.js | Adds various items from Star Wars by Disney | SeaPickle754 |
| sus.js | Adds an Among Us crewmate | Nv7 |
| triggerable_random_powders.js | Adds powders with different abilities, such as heating and cooling | Alice |
| troll.js | Adds various dumb elements that iterate randomly on the entire screen | Alice |
-| star_wars.js | Adds various items from Star Wars by Disney | SeaPickle754 |
+
| WhisperingTheory.js | Adds powder and gas variant of heater and cooler | kaeud |
| Visual Effects |
| acid_and_shapes.js | Weird visual effects. Enable in Settings | Alice |
| heatglow.js | Red glowing effect for hot metals | nousernamefound |
| invisible_dye.js | Adds elements like Dye and Spray Paint that take the color of the background | Alice |
| invisible_wall.js | Adds an element like Wall that takes the color of the background | Alice |
+| moreViews.js | Many new rendering modes | ggod |
+| onecolor.js | Makes all placed pixels single-colored | nousernamefound |
| paint_event.js | Adds a random event that randomly paints a circle | Alice |
| rainbow_tests.js | Adds variants of the rainbow element with different maths | Alice |
| Shroomboxels.js | A variant of acid_and_shapes.js that uses a different trigonometric function | Alice |
+| singleColor.js | Makes all elements pick one color each time they're drawn | stefanblox |
+
+| Compilations |
+| a_mod_by_alice.js | A mod combining most of Alice’s mods, and some other things | Alice |
+| food_mods.js | A mod combining most food mods | stefanblox, moss, Tisquares, SquareScreamYT, Adora, pixelegend4, Alice, Nubo318, Clide4, rottenEgghead |
| Technical Libraries & Tests |
| a_bundle_of_tests.js | Several test functions | Alice |
+| all_stain.js | Makes every element stain solids | stefanblox |
| betterMenuScreens.js | Library for mods to create their own menus | ggod |
| changePixelDebug.js | Makes the changePixel() function abort and log to console when it tries to change to a non-existent element | Alice |
| changeTempReactionParameter.js | Adds the changeTemp property to modded reactions | Alice |
From 3aa3d9e487fbed196472899ef5dea580fcbd9429 Mon Sep 17 00:00:00 2001
From: jakob3797 <167775393+jakob3797@users.noreply.github.com>
Date: Fri, 10 May 2024 10:59:34 -0500
Subject: [PATCH 04/23] Create than updated Lab.js
All working
---
mods/Lab.js | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 233 insertions(+)
create mode 100644 mods/Lab.js
diff --git a/mods/Lab.js b/mods/Lab.js
new file mode 100644
index 00000000..f759f1c4
--- /dev/null
+++ b/mods/Lab.js
@@ -0,0 +1,233 @@
+elements.lab = {
+ color: "#ff0000",
+ behaviorOn: behaviors.WALL,
+ behavior: [
+ "CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wire|CR:wire|CR:wire|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall",
+ "CR:wall|DL|XX|XX|XX|XX|XX|CR:e_cr|CR:wall|CR:sensor|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|CR:wall|CR:wall|CR:wall|XX|CR:wall|CR:wall|CR:wall|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|CR:wall|CR:wall|CR:wire|xx|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:ecloner|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|CR:wall|CR:wall|CR:wire|CR:wall|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|CR:sensor|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:glass|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|CR:wall|XX|CR:wall|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:player|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|XX|CR:wall|CR:wall|CR:wall|XX|CR:wall|CR:wall|CR:wall|CR:wall|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|CR:wire|CR:wall|CR:wire|CR:wall|CR:wire|CR:wall|CR:wire|CR:wall|XX|XX|XX|CR:wall|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wall|XX|XX|XX|CR:wall|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|CR:wall|CR:wall|CR:wall|CR:wire|CR:wall|CR:wall|CR:wall|CR:wire|CR:sensor|XX|XX|CR:wall|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|CR:wall|CR:wall|CR:wall|CR:wire|CR:wire|CR:wire|CR:wire|CR:wire|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall|CR:wall",
+ ],
+ category: "lab",
+ state: "solid",
+};
+elements.e_cr = {
+ name: "e-cr",
+ color: "#dddd00",
+ behavior: behaviors.WALL,
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:human|XX"
+ ],
+ tick: function(pixel) {
+ if (pixel.create) { return }
+ for (var i = 0; i < adjacentCoords.length; i++) {
+ var coords = adjacentCoords[i];
+ var x = pixel.x + coords[0];
+ var y = pixel.y + coords[1];
+ if (!isEmpty(x,y,true)) {
+ pixel.temp = pixelMap[x][y].temp;
+ if (pixelMap[x][y].create) { pixel.create = pixelMap[x][y].create; break }
+ var element = pixelMap[x][y].element;
+ if (element === pixel.element || elements[pixel.element].ignore.indexOf(element) !== -1) { continue }
+ pixel.create = element;
+ break;
+ }
+ }
+ },
+ ignore: ["cloner","slow_cloner","clone_powder","floating_cloner","wire","ewall","wire","sensor","battery"],
+ category:"machines",
+ insulate:true,
+ darkText: true,
+ conduct: 1,
+ hardness: 1,
+ movable: false
+}
+var libraryMod = "mods/code_library.js";
+
+if(enabledMods.includes(libraryMod)) {
+ sussyKey = null;
+ isShift = false;
+ isAlt = false;
+
+ document.addEventListener("keydown", function(modifierDownListener) {
+ // User presses shift
+ if (modifierDownListener.keyCode == 16) {
+ isShift = true;
+ }
+ // User presses alt
+ if (modifierDownListener.keyCode == 18) {
+ isAlt = true;
+ }
+ });
+
+ document.addEventListener("keyup", function(modifierUpListener) {
+ // User releases shift
+ if (modifierUpListener.keyCode == 16) {
+ isShift = false;
+ }
+ // User releases alt
+ if (modifierUpListener.keyCode == 18) {
+ isAlt = false;
+ }
+ });
+
+ document.addEventListener("keyup", function(sussyListener) {
+ switch (sussyListener.keyCode) {
+ case 87:
+ sussyKey = "W";
+ break;
+ case 65:
+ sussyKey = "A";
+ break;
+ case 83:
+ sussyKey = "S";
+ break;
+ case 68:
+ sussyKey = "D";
+ break;
+ case 81:
+ sussyKey = "Q";
+ break;
+ case 88:
+ sussyKey = "X";
+ break;
+ case 90:
+ sussyKey = "Z";
+ break;
+ case 72:
+ sussyKey = "H";
+ break;
+ };
+ });
+
+ function controllablePixelTryCreatePixelNullCheck(element,x,y) {
+ if(!elements[element]) { //catch the null
+ return false;
+ };
+ if(isEmpty(x,y)) {
+ tryCreatePixel(element,x,y);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ elements.player = {
+ color: "#FFFFFF",
+ colorOn: "#FFFF00",
+ behavior: behaviors.WALL,
+ state: "solid",
+ density: 2000,
+ maxSize: 1,
+ conduct: 1,
+ hardness: 1,
+ tick: function(pixel) {
+ var xx = pixel.x;
+ var yy = pixel.y;
+ userElement = currentElement;
+ if(userElement === pixel.element) {
+ userElement = null;
+ };
+ if(isShift && !isAlt) {
+ sussyKey === "Z" ? pixel.color = "rgb(255,191,127)" : pixel.color = "rgb(255,127,127)";
+ }
+ if(isAlt && !isShift) {
+ sussyKey === "Z" ? pixel.color = "rgb(191,255,127)" : pixel.color = "rgb(127,255,127)";
+ }
+ if(isAlt && isShift) {
+ sussyKey === "Z" ? pixel.color = "rgb(255,255,0)" : pixel.color = "rgb(255,255,127)";
+ }
+ if(!isAlt && !isShift) {
+ sussyKey === "Z" ? pixel.color = "rgb(255,255,191)" : pixel.color = "rgb(255,255,255)";
+ }
+ if(sussyKey !== null) {
+ switch (sussyKey) {
+ case "W":
+ isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy-1) : tryMove(pixel,xx,yy-1);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "A":
+ isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx-1,yy) : tryMove(pixel,xx-1,yy);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "S":
+ isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy+1) : tryMove(pixel,xx,yy+1);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "D":
+ tryMove(pixel,xx+1,yy);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "H": //Alt+D is something else in some browsers.
+ if(isAlt) {
+ controllablePixelTryCreatePixelNullCheck(userElement,xx+1,yy);
+ };
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "X":
+ explodeAt(xx,yy,5)
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "Z":
+ if (!pixel.charge && !pixel.chargeCD && !isEmpty(pixel.x,pixel.y,true)) {
+ pixel.charge = 1;
+ }
+ if(!isShift === 0) {
+ sussyKey = null;
+ }
+ break;
+ case "Q": //Use if a key gets stuck
+ sussyKey = null;
+ isShift = null;
+ isAlt = null;
+ break;
+ }
+ }
+ },
+ }
+} else {
+ alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`)
+ enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod)
+ localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
+};
+
+// i know it looks messy but it works
+
+// if u dont belive me test it but place it in the center of the canvas
From 7dcd4dcae60f418bc8417901a5cd6a04110ee576 Mon Sep 17 00:00:00 2001
From: jakob3797 <167775393+jakob3797@users.noreply.github.com>
Date: Fri, 10 May 2024 11:28:53 -0500
Subject: [PATCH 05/23] Update Quicksand_one.js
Tested working
---
mods/Quicksand_one.js | 597 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 593 insertions(+), 4 deletions(-)
diff --git a/mods/Quicksand_one.js b/mods/Quicksand_one.js
index 01659cc1..7f601977 100644
--- a/mods/Quicksand_one.js
+++ b/mods/Quicksand_one.js
@@ -59,7 +59,7 @@ elements.mangrove_mud = {
density: 1089,
stain: 0.25
};
-peat_slurry = {
+elements.peat_slurry = {
color: "#556B2F",
behavior: elements.slime.behavior,
viscosity: 10000,
@@ -92,7 +92,7 @@ elements.fen_mud = {
tempLow: 0,
category: "liquids",
state: "liquid",
- density: 1550,
+ density: 1450,
stain: 0.28
};
elements.swamp_sludge = {
@@ -479,7 +479,7 @@ elements.mud = {
density: 1000,
stain: 0.3
};
-elements.quicksand = {
+elements.quicksand_mud = {
color: "#DAA520",
behavior: elements.slime.behavior,
viscosity: 1750,
@@ -505,7 +505,7 @@ elements.sandy_mud = {
};
elements.sticky_quicksand = {
color: "#DAA520",
- behavior:elements.sap.behavior,
+ behavior: elements.sap.behavior,
viscosity: 1700,
tempHigh: 65,
stateHigh: "liquid",
@@ -515,3 +515,592 @@ elements.sticky_quicksand = {
density: 1100,
stain: 0.25
};
+elements.fluff_mud = {
+ color: "#964B00",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 40,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1300,
+ stain: 0.2
+};
+elements.bog = {
+ color: "#556B2F",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 45,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1400,
+ stain: 0.25
+};
+elements.mire = {
+ color: "#2E8B57",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 50,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1500,
+ stain: 0.3
+};
+elements.oobleck = {
+ color: "#008000",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 25,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1600,
+ stain: 0.15
+};
+elements.spiderwebs = {
+ color: "#D3D3D3",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 20,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1700,
+ stain: 0.1
+};
+
+elements.silt_quicksand = {
+ color: "#DAA520",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 68,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1500,
+ stain: 0.15
+};
+elements.syrupy_mud = {
+ color: "#8B4513",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 65,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1550,
+ stain: 0.2
+};
+elements.quagmire_mud = {
+ color: "#A0522D",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 60,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1600,
+ stain: 0.25
+};
+elements.bog_quicksand = {
+ color: "#556B2F",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 62,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1650,
+ stain: 0.2
+};
+elements.sludge_mud = {
+ color: "#2E8B57",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 58,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1700,
+ stain: 0.3
+};
+elements.squishy_slime = {
+ color: "#FF4500",
+ behavior: elements.slime.behavior,
+ viscosity: 15000,
+ tempHigh: 20,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1600,
+ stain: 0.1
+};
+elements.sparkling_slime = {
+ color: "#FFD700",
+ behavior: elements.slime.behavior,
+ viscosity: 12000,
+ tempHigh: 25,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1650,
+ stain: 0.15
+};
+elements.glittery_slime = {
+ color: "#B0E0E6",
+ behavior: elements.slime.behavior,
+ viscosity: 25000,
+ tempHigh: 10,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1750,
+ stain: 0.25
+};
+elements.swirling_slime = {
+ color: "#9370DB",
+ behavior: elements.slime.behavior,
+ viscosity: 18000,
+ tempHigh: 5,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1800,
+ stain: 0.3
+};
+elements.fizzling_slime = {
+ color: "#00FFFF",
+ behavior: elements.slime.behavior,
+ viscosity: 15000,
+ tempHigh: -5,
+ stateHigh: "liquid",
+ tempLow: -10,
+ category: "liquids",
+ state: "liquid",
+ density: 1900,
+ stain: 0.25
+};
+elements.crackling_slime = {
+ color: "#FF6347",
+ behavior: elements.slime.behavior,
+ viscosity: 20000,
+ tempHigh: -10,
+ stateHigh: "liquid",
+ tempLow: -15,
+ category: "liquids",
+ state: "liquid",
+ density: 1480,
+ stain: 0.3
+};
+elements.glowing_slime = {
+ color: "#7B68EE",
+ behavior: elements.slime.behavior,
+ viscosity: 25000,
+ tempHigh: -15,
+ stateHigh: "liquid",
+ tempLow: -20,
+ category: "liquids",
+ state: "liquid",
+ density: 1395,
+ stain: 0.2
+};
+elements.crunchy_slime = {
+ color: "#00BFFF",
+ behavior: elements.slime.behavior,
+ viscosity: 30000,
+ tempHigh: -20,
+ stateHigh: "liquid",
+ tempLow: -25,
+ category: "liquids",
+ state: "liquid",
+ density: 2050,
+ stain: 0.25
+};
+elements.sizzling_slime = {
+ color: "#FFA07A",
+ behavior: elements.slime.behavior,
+ viscosity: 35000,
+ tempHigh: -25,
+ stateHigh: "liquid",
+ tempLow: -30,
+ category: "liquids",
+ state: "liquid",
+ density: 1463,
+ stain: 0.3
+};
+elements.spider_webbing = {
+ color: "#FFFFFF",
+ behavior: elements.slime.behavior,
+ viscosity: 5000,
+ tempHigh: 25,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1100,
+ stain: 0.05
+};
+elements.webbing_gel = {
+ color: "#FFD700",
+ behavior: elements.slime.behavior,
+ viscosity: 7000,
+ tempHigh: 30,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1200,
+ stain: 0.08
+};
+elements.arachnid_slime = {
+ color: "#00FF00",
+ behavior: elements.slime.behavior,
+ viscosity: 8000,
+ tempHigh: 35,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1250,
+ stain: 0.1
+};
+elements.sticky_silk = {
+ color: "#FFFACD",
+ behavior: elements.slime.behavior,
+ viscosity: 6000,
+ tempHigh: 40,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1300,
+ stain: 0.12
+};
+elements.webbing_solution = {
+ color: "#FFA07A",
+ behavior: elements.slime.behavior,
+ viscosity: 9000,
+ tempHigh: 45,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1350,
+ stain: 0.15
+};
+elements.arachnid_resin = {
+ color: "#FF00FF",
+ behavior: elements.slime.behavior,
+ viscosity: 7500,
+ tempHigh: 50,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1400,
+ stain: 0.18
+};
+elements.spider_snot = {
+ color: "#7FFFD4",
+ behavior: elements.slime.behavior,
+ viscosity: 8500,
+ tempHigh: 55,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1450,
+ stain: 0.2
+};
+elements.arachnid_ooze = {
+ color: "#6495ED",
+ behavior: elements.slime.behavior,
+ viscosity: 9500,
+ tempHigh: 60,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1325,
+ stain: 0.22
+};
+elements.sticky_spider_goo = {
+ color: "#8A2BE2",
+ behavior: elements.slime.behavior,
+ viscosity: 8500,
+ tempHigh: 65,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1350,
+ stain: 0.25
+};
+elements.arachnid_sludge = {
+ color: "#FF4500",
+ behavior: elements.slime.behavior,
+ viscosity: 8000,
+ tempHigh: 70,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1142,
+ stain: 0.28
+};
+elements.spider_secretion = {
+ color: "#FFFF00",
+ behavior: elements.slime.behavior,
+ viscosity: 9000,
+ tempHigh: 75,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1464,
+ stain: 0.3
+};
+elements.arachnid_essence = {
+ color: "#800080",
+ behavior: elements.slime.behavior,
+ viscosity: 8500,
+ tempHigh: 80,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1325,
+ stain: 0.25
+};
+elements.sticky_spider_residue = {
+ color: "#8B4513",
+ behavior: elements.slime.behavior,
+ viscosity: 9500,
+ tempHigh: 85,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1499,
+ stain: 0.28
+};
+elements.arachnid_phlegm = {
+ color: "#32CD32",
+ behavior: elements.slime.behavior,
+ viscosity: 9000,
+ tempHigh: 90,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1345,
+ stain: 0.3
+};
+elements.sticky_spider_slime = {
+ color: "#800000",
+ behavior: elements.slime.behavior,
+ viscosity: 9000,
+ tempHigh: 105,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1431,
+ stain: 0.3
+};
+elements.arachnid_mucus = {
+ color: "#FF1493",
+ behavior: elements.slime.behavior,
+ viscosity: 9500,
+ tempHigh: 110,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 2000,
+ stain: 0.25
+};
+elements.spider_secretion = {
+ color: "#32CD32",
+ behavior: elements.slime.behavior,
+ viscosity: 9000,
+ tempHigh: 115,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 2050,
+ stain: 0.28
+};
+elements.arachnid_excretion = {
+ color: "#FF4500",
+ behavior: elements.slime.behavior,
+ viscosity: 8500,
+ tempHigh: 120,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 2100,
+ stain: 0.3
+};
+elements.sticky_spider_ooze = {
+ color: "#00008B",
+ behavior: elements.slime.behavior,
+ viscosity: 9000,
+ tempHigh: 125,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 2150,
+ stain: 0.25
+};
+elements.arachnid_liquid = {
+ color: "#FFFF00",
+ behavior: elements.slime.behavior,
+ viscosity: 9500,
+ tempHigh: 130,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 2200,
+ stain: 0.28
+};
+elements.swamp_slime = {
+ color: "#32CD32",
+ behavior: elements.slime.behavior,
+ viscosity: 9000,
+ tempHigh: 30,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1450,
+ stain: 0.2
+};
+elements.muddy_swamp_water = {
+ color: "#8B4513",
+ behavior: elements.slime.behavior,
+ viscosity: 9500,
+ tempHigh: 35,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1500,
+ stain: 0.25
+};
+elements.swamp_sludge = {
+ color: "#556B2F",
+ behavior: elements.slime.behavior,
+ viscosity: 10000,
+ tempHigh: 40,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1550,
+ stain: 0.3
+};
+elements.boggy_mud = {
+ color: "#6B8E23",
+ behavior: elements.slime.behavior,
+ viscosity: 10500,
+ tempHigh: 45,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1600,
+ stain: 0.2
+};
+elements.swamp_ooze = {
+ color: "#32CD32",
+ behavior: elements.slime.behavior,
+ viscosity: 11000,
+ tempHigh: 50,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1650,
+ stain: 0.25
+};
+elements.sludgy_swamp_mixture = {
+ color: "#556B2F",
+ behavior: elements.slime.behavior,
+ viscosity: 11500,
+ tempHigh: 55,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1700,
+ stain: 0.3
+};
+elements.marshy_slime = {
+ color: "#8B4513",
+ behavior: elements.slime.behavior,
+ viscosity: 12000,
+ tempHigh: 60,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1750,
+ stain: 0.2
+};
+elements.soggy_bog = {
+ color: "#6B8E23",
+ behavior: elements.slime.behavior,
+ viscosity: 12500,
+ tempHigh: 65,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1800,
+ stain: 0.25
+};
+elements.mossy_swamp_water = {
+ color: "#32CD32",
+ behavior: elements.slime.behavior,
+ viscosity: 13000,
+ tempHigh: 70,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1850,
+ stain: 0.3
+};
+elements.murky_marsh_mixture = {
+ color: "#556B2F",
+ behavior: elements.slime.behavior,
+ viscosity: 13500,
+ tempHigh: 75,
+ stateHigh: "liquid",
+ tempLow: 0,
+ category: "liquids",
+ state: "liquid",
+ density: 1900,
+ stain: 0.2
+};
From 2117fd84fb7b11945247e0c9fa3c67ca74d34c00 Mon Sep 17 00:00:00 2001
From: DoobieRalsei <163950752+DoobieRalsei@users.noreply.github.com>
Date: Fri, 10 May 2024 12:13:17 -0700
Subject: [PATCH 06/23] =?UTF-8?q?Frozen=20008=20Falls=20better,=20Infected?=
=?UTF-8?q?=20skin=20=E2=80=9Crots=E2=80=9D=20and=20collapses?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mods/scp.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mods/scp.js b/mods/scp.js
index 9dd1828b..db64a288 100644
--- a/mods/scp.js
+++ b/mods/scp.js
@@ -86,7 +86,7 @@ elements.frozen_008 = {
behavior: [
"XX|XX|XX",
"XX|DL%0.001|X",
- "M2%1.0|M1%1.0|M2%1.0",
+ "XX|M1%1.0|XX",
],
reactions: {
"head": { elem1:null, elem2:"z_head" , chance:0.4 },
@@ -114,7 +114,7 @@ elements.infected_skin = {
behavior: [
"XX|CR:stench,stench,stench,SCP_008,fly%0.05 AND CH:meat>infected_meat%1|XX",
"CH:meat>infected_meat%1|XX|CH:meat>infected_meat%1",
- "XX|CH:meat>infected_meat%1|XX",
+ "M2%1.0|M1%1.0 AND CH:meat>infected_meat%1|M2%1.0",
],
tick: function(pixel) {
if (pixel.temp > 40 && Math.random() < 0.003) {
From 6b2b570f4cbc2c460f3c56f6e9fa91d7f3575da1 Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Fri, 10 May 2024 15:18:47 -0400
Subject: [PATCH 07/23] fixed issue
---
mod-list.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mod-list.html b/mod-list.html
index 22afd23f..be9438b4 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -136,7 +136,7 @@
| evenmoretemptools.js | Adds different temperature-modifying tools (±350/tick, NaN, and Infinity) | Alice |
| extra_element_info.js | Adds descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanilla | Melecie |
| find.js | Adds a find mode that highlights a chosen element as pulsating red and yellow (read commit description) | Alice |
-| jaydsfunctions.js | Adds extra tools |
+| jaydsfunctions.js | Adds extra tools | Jayd |
| insane_random_events.js | Massively buffs random events | Alice |
| invertscroll.js | Inverts the scroll wheel for adjusting brush size | SquareScreamYT |
| mobile_shift.js | Adds a button for shift on mobile | SquareScreamYT |
From 2dfdc8de9ad50fe4cb91ddd47b8217337f7fef60 Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Sat, 11 May 2024 09:17:53 +0800
Subject: [PATCH 08/23] fruitmijk
---
mods/aChefsDream.js | 178 ++++++++++++++++++++++++++++++++++++++++----
1 file changed, 163 insertions(+), 15 deletions(-)
diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js
index 205c30d7..acf75e57 100644
--- a/mods/aChefsDream.js
+++ b/mods/aChefsDream.js
@@ -18,7 +18,37 @@ function getRGB(rgb){
let rgb2 = rgb.replace(")", "").replace("rgb(", "").replace(/,/g, "r").split("r")
return { r: parseInt(rgb2[0]), g: parseInt(rgb2[1]), b: parseInt(rgb2[2]) };
}
-
+function findMostFrequent(arr) {
+ let freqMap = {};
+
+ if (arr) {
+ if (arr.length === 0) {
+ return "water";
+ } else if (arr.length === 1) {
+ return arr[0]
+ } else {
+ arr.forEach(item => {
+ if(!freqMap[item]) {
+ freqMap[item] = 0;
+ }
+ freqMap[item]++;
+ });
+
+ let max = 0;
+ let mostFrequent = [];
+
+ for (let item in freqMap) {
+ if (freqMap[item] > max) {
+ max = freqMap[item];
+ mostFrequent = [item];
+ } else if (freqMap[item] === max) {
+ mostFrequent.push(item);
+ }
+ }
+ return mostFrequent.join(', ');
+ }
+ }
+}
behaviors.STURDYPOWDER2 = [
"XX|XX|XX",
"XX|XX|XX",
@@ -39,25 +69,21 @@ elements.knife = {
//changePixel(pixel, cutInto)
if (shiftDown) {
if (Math.random() < 0.5) {
- changePixel(pixel, cutInto)
- var cutIntoEmit = elements[pixel.element].cutIntoEmit;
- if (!cutIntoEmit) { return };
- if(cutIntoEmit instanceof Array) { cutIntoEmit = cutIntoEmit[Math.floor(Math.random() * cutIntoEmit.length)] };
var thiselement = pixel.element;
- if (elements[thiselement].cutIntoEmit && Math.random() < 0.7 && isEmpty(pixel.x,pixel.y-1)) {
- createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
+ changePixel(pixel, cutInto)
+ pixelTempCheck(pixel);
+ if (elements[thiselement].cutIntoColor) {
+ pixel.color = pixelColorPick(pixel, elements[thiselement].cutIntoColor);
}
}
}
else if (!shiftDown) {
if (Math.random() < 0.1) {
- changePixel(pixel, cutInto)
- var cutIntoEmit = elements[pixel.element].cutIntoEmit;
- if (!cutIntoEmit) { return };
- if(cutIntoEmit instanceof Array) { cutIntoEmit = cutIntoEmit[Math.floor(Math.random() * cutIntoEmit.length)] };
var thiselement = pixel.element;
- if (elements[thiselement].cutIntoEmit && Math.random() < 0.4 && isEmpty(pixel.x,pixel.y-1)) {
- createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
+ changePixel(pixel, cutInto)
+ pixelTempCheck(pixel);
+ if (elements[thiselement].cutIntoColor) {
+ pixel.color = pixelColorPick(pixel, elements[thiselement].cutIntoColor);
}
}
}
@@ -422,6 +448,10 @@ elements.soup = {
if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); }
else {
ingredient.color = pixelColorPick(ingredient, hex);
+ if (!ingredient.elemlist){
+ ingredient.elemlist = [];
+ }
+ ingredient.elemlist.push(soup.elemlist[Math.floor(Math.random() * soup.elemlist.length)])
}
}
}
@@ -439,6 +469,13 @@ elements.soup = {
}
}
},
+ hoverStat: function(soup, ingredient) {
+ if (findMostFrequent(soup.elemlist) == undefined) {
+ return "Ingredients:None"
+ } else {
+ return "Ingredients:"+findMostFrequent(soup.elemlist)
+ }
+ },
}
if (!elements.broth.reactions) elements.broth.reactions = {};
@@ -6586,6 +6623,7 @@ elements.durian = {
cutInto: "cut_durian",
state: "solid",
density: 1050,
+ breakInto: "durian_juice"
}
elements.cut_durian = {
@@ -6601,6 +6639,7 @@ elements.cut_durian = {
hidden: true,
freezeDryInto: "freeze_dried_fruits",
freezeDryIntoColor: "#a19f3b",
+ breakInto: "durian_juice"
}
elements.durian_seed = {
@@ -6649,6 +6688,32 @@ elements.durian_seed = {
"XX|M1|XX",
],
};
+
+elements.durian_juice = {
+ color: "#ebe06e",
+ onMix: function(pixel) {
+ if (shiftDown) {
+ if (Math.random() < 0.2) {
+ changePixel(pixel,"juice")
+ pixel.color = pixelColorPick(pixel,"#ebe06e")
+ }
+ }
+ },
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ tempHigh: 100,
+ stateHigh: ["steam","sugar"],
+ burn: 70,
+ burnTime: 300,
+ burnInto: ["steam", "smoke"],
+ state: "liquid",
+ density: 825,
+ hidden: true,
+ temp: 30,
+ hidden: true,
+ tempLow: 0,
+};
+eLists.JUICEMIXABLE.push("durian_juice");
elements.egg_white = {
color: "#edece8",
behavior: behaviors.LIQUID,
@@ -7613,6 +7678,7 @@ elements.unripe_rambutan = {
cutInto: "cut_rambutan",
state: "solid",
density: 1050,
+ breakInto: "rambutan_juice"
}
elements.rambutan = {
@@ -7626,7 +7692,7 @@ elements.rambutan = {
state: "solid",
density: 1050,
cutInto: "cut_rambutan",
- hidden: true,
+ breakInto: "rambutan_juice"
}
elements.cut_rambutan = {
@@ -7642,6 +7708,7 @@ elements.cut_rambutan = {
hidden: true,
freezeDryInto: "freeze_dried_fruits",
freezeDryIntoColor: "#a19f3b",
+ breakInto: "rambutan_juice"
}
elements.rambutan_seed = {
@@ -7691,6 +7758,32 @@ elements.rambutan_seed = {
],
};
+elements.rambutan_juice = {
+ color: "#f7f4cb",
+ onMix: function(pixel) {
+ if (shiftDown) {
+ if (Math.random() < 0.2) {
+ changePixel(pixel,"juice")
+ pixel.color = pixelColorPick(pixel,"#f7f4cb")
+ }
+ }
+ },
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ tempHigh: 100,
+ stateHigh: ["steam","sugar"],
+ burn: 70,
+ burnTime: 300,
+ burnInto: ["steam", "smoke"],
+ state: "liquid",
+ density: 825,
+ hidden: true,
+ temp: 30,
+ hidden: true,
+ tempLow: 0,
+};
+eLists.JUICEMIXABLE.push("rambutan_juice");
+
elements.barbecued_shrimp = {
color:["#bf743b", "#b57026","#8f5e29","#a87b11"],
behavior: behaviors.STURDYPOWDER,
@@ -7829,6 +7922,26 @@ elements.raisin = {
isFood: true
}
+elements.fruit_slush = {
+ color: "#ed93a4",
+ behavior: behaviors.LIQUID,
+ reactions: {
+ "dirt": { elem1: null, elem2: "mud" },
+ "sand": { elem1: null, elem2: "wet_sand" },
+ "uranium": { elem1:"dirty_water", chance:0.25 },
+ },
+ temp: -5,
+ tempHigh: 18,
+ tempLow: -20,
+ stateLow: "juice_ice",
+ stateHigh: "juice",
+ category: "food",
+ state: "liquid",
+ density: 95,
+ viscosity: 100,
+ hidden: true
+}
+
// things to mix: juice, water, seltzer, sugar water, soda, juice, milk, cream,
// juice, milk, chocolate milk, fruit milk, eggnog, nut milk, alcohol, wine, tea,
// tea, coffee, honey, caramel, vanilla essence, peppermint tea, sugar, yogurt,
@@ -7836,9 +7949,9 @@ elements.raisin = {
// juice mixing
for (let juicei = 0; juicei < eLists.JUICEMIXABLE.length; juicei++) {
+ elem = eLists.JUICEMIXABLE[juicei];
// juice with juice
for (let juicej = 0; juicej < eLists.JUICEMIXABLE.length; juicej++) {
- elem = eLists.JUICEMIXABLE[juicei];
elem2 = eLists.JUICEMIXABLE[juicej];
if (elem != elem2) {
if (!elements[elem].reactions) { chance:1, elements[elem].reactions = {} }
@@ -7909,6 +8022,19 @@ for (let juicei = 0; juicei < eLists.JUICEMIXABLE.length; juicei++) {
pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
}}
}
+
+iceelem = elem+"_ice"
+// ice slush
+elements[elem].stateLowColorMultiplier = 1.2;
+elements[elem].tempLow = 10;
+elements.fruit_slush.stateHighColorMultiplier = 0.83333333333;
+elements.fruit_slush.stateLowColorMultiplier = 1.2;
+elements.juice_ice.stateHighColorMultiplier = 0.83333333333;
+elements.juice_ice.stateHigh = "fruit_slush"
+elements.juice_ice.tempHigh = -20
+elements[iceelem].stateHigh = "fruit_slush"
+elements[iceelem].tempHigh = -20
+
// fruit milk with milk
elements.fruit_milk.reactions.milk = { chance:1, func: function(pixel1, pixel2){
let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2);
@@ -7982,3 +8108,25 @@ elements.fruit_milk.reactions.fruit_milk = { chance:1, func: function(pixel1, pi
pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
}
}
+// fruit milk onMix
+elements.fruit_milk.onMix = function(pixel){
+ let num = Math.floor(Math.random() * 4);
+ let x = pixel.x + adjacentCoords[num][0];
+ let y = pixel.y + adjacentCoords[num][1];
+ if(!isEmpty(x,y) && !outOfBounds(x,y)){
+ let pixel2 = pixelMap[x][y];
+ if(pixel.color != pixel2.color && pixel2.element == "fruit_milk"){
+ let condition;
+ if(shiftDown == 0){
+ condition = (Math.floor(Math.random() * 2) == 1);
+ } else {
+ condition = true;
+ }
+ if(condition){
+ let newrgb = interpolateRgb(getRGB(pixel.color), getRGB(pixel2.color), 0.5);
+ pixel.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+ pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+ }
+ }
+ }
+ }
From 753b5e899b5921df8123951a76b1c998804fea80 Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sat, 11 May 2024 16:49:18 -0400
Subject: [PATCH 09/23] ray emitter
---
mods/nousersthings.js | 81 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 524b532e..2f312c02 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2696,4 +2696,85 @@ elements.healing_serum = {
}
}
}
+}
+var rayElement = "pointer"
+var rayStoppedByWalls = false
+elements.ray_emitter = {
+ color: "#ff9c07",
+ behavior: behaviors.WALL,
+ category: "machines",
+ movable: false,
+ onSelect: function(pixel){
+ var rayans = prompt("Please input the desired element of this ray emitter",(rayElement||undefined));
+ if (!rayans) { return }
+ rayElement = mostSimilarElement(rayans);
+ var rayans2 = prompt("Should the ray stop by walls? Write true or false.",(rayStoppedByWalls||false));
+ if (!rayans2 || rayans2 !== "true" || rayans2 !== "false") { return }
+ },
+ hoverStat: function(pixel){
+ return pixel.rayElement.toUpperCase() || "unset"
+ },
+ tick: function(pixel){
+ if (pixelTicks == pixel.start){
+ pixel.rayElement = rayElement
+ pixel.rayStoppedByWalls = rayStoppedByWalls
+ }
+ 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].charge && pixelMap[x][y].element == "wire"){
+ var dir = [0-squareCoords[i][0], 0-squareCoords[i][1]]
+ var startx = pixel.x+dir[0]
+ var starty = pixel.y+dir[1]
+ var magnitude = 0
+ if (width > height){magnitude = width} else {magnitude = height}
+ var endx = startx+(magnitude*dir[0])
+ var endy = starty+(magnitude*dir[1])
+ // console.log("Direction seems to be " + dir)
+ var jcoords = lineCoords(startx, starty, endx, endy, 1)
+ // console.log(startx + " is the starting x, " + starty + " is the starting y, " + endx + " is the ending x, " + endy + " is the ending y. Result is " + jcoords)
+ for (var j = 0; j < jcoords.length; j++) {
+ var lcoord = jcoords[j];
+ var lx = lcoord[0];
+ var ly = lcoord[1];
+ // console.log(lcoord)
+ if (isEmpty(lx,ly)){
+ createPixel(pixel.rayElement, lx, ly)
+ pixelMap[lx][ly].temp = pixelMap[x][y].temp
+ } else if (!isEmpty(lx, ly, true)){
+ if (pixelMap[lx][ly].element != pixel.rayElement && pixel.rayStoppedByWalls){
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ insulate: true,
+}
+elements.indestructible_battery = {
+ color: elements.battery.color,
+ behavior: elements.battery.behavior,
+ category: elements.battery.category
+}
+elements.ray = {
+ color: "#ffffff",
+ behavior: behaviors.WALL,
+ category: "special",
+ hoverStat: function(pixel){
+ return pixel.life || "unset"
+ },
+ properties: {
+ life: 30
+ },
+ tick: function(pixel){
+ pixel.life -= 1
+ pixel.color = "rgba(255,255,255,"+(pixel.life/30)+")"
+ if (pixel.life <= 0){
+ deletePixel(pixel.x, pixel.y)
+ }
+ }
}
\ No newline at end of file
From a62b38f8383849a85670d465d685cfe52995bdf7 Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sat, 11 May 2024 16:50:26 -0400
Subject: [PATCH 10/23] f
---
mods/nousersthings.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 2f312c02..4c21a709 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2697,7 +2697,7 @@ elements.healing_serum = {
}
}
}
-var rayElement = "pointer"
+var rayElement = "ray"
var rayStoppedByWalls = false
elements.ray_emitter = {
color: "#ff9c07",
From 97531509fad4df0516ac365f7bcfa9acd628899b Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sat, 11 May 2024 19:38:35 -0400
Subject: [PATCH 11/23] ray color, better interference
---
mods/nousersthings.js | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 4c21a709..58824ec3 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2709,7 +2709,8 @@ elements.ray_emitter = {
if (!rayans) { return }
rayElement = mostSimilarElement(rayans);
var rayans2 = prompt("Should the ray stop by walls? Write true or false.",(rayStoppedByWalls||false));
- if (!rayans2 || rayans2 !== "true" || rayans2 !== "false") { return }
+ if (!rayans2) { rayans2 = false } else { rayans2 = true }
+ rayStoppedByWalls = rayans2
},
hoverStat: function(pixel){
return pixel.rayElement.toUpperCase() || "unset"
@@ -2743,9 +2744,15 @@ elements.ray_emitter = {
if (isEmpty(lx,ly)){
createPixel(pixel.rayElement, lx, ly)
pixelMap[lx][ly].temp = pixelMap[x][y].temp
+ if (pixel.rayElement == "ray"){
+ pixelMap[lx][ly].rColor = pixel.color
+ }
} else if (!isEmpty(lx, ly, true)){
if (pixelMap[lx][ly].element != pixel.rayElement && pixel.rayStoppedByWalls){
break;
+ } else if (pixelMap[lx][ly].element == "ray" && pixel.rayElement == "ray"){
+ pixelMap[lx][ly].rColor = pixel.color
+ pixelMap[lx][ly].life = 30
}
}
}
@@ -2763,6 +2770,7 @@ elements.indestructible_battery = {
elements.ray = {
color: "#ffffff",
behavior: behaviors.WALL,
+ movable: true,
category: "special",
hoverStat: function(pixel){
return pixel.life || "unset"
@@ -2771,8 +2779,15 @@ elements.ray = {
life: 30
},
tick: function(pixel){
+ if (pixel.rColor){
+ pixel.rgb = pixel.rColor.match(/\d+/g);
+ } else {
+ pixel.rgb = [255,255,255]
+ }
pixel.life -= 1
- pixel.color = "rgba(255,255,255,"+(pixel.life/30)+")"
+ if (pixel.life < 30){
+ pixel.color = "rgba("+pixel.rgb[0]+","+pixel.rgb[1]+","+pixel.rgb[2]+","+(pixel.life/30)+")"
+ } else {pixel.color = "rgba("+pixel.rgb[0]+","+pixel.rgb[1]+","+pixel.rgb[2]+",1)"}
if (pixel.life <= 0){
deletePixel(pixel.x, pixel.y)
}
From 38262f5df4249546b5424bd7eaa862d736dcdf37 Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sat, 11 May 2024 19:47:20 -0400
Subject: [PATCH 12/23] f
---
mods/nousersthings.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 58824ec3..4ae5f65f 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2746,6 +2746,7 @@ elements.ray_emitter = {
pixelMap[lx][ly].temp = pixelMap[x][y].temp
if (pixel.rayElement == "ray"){
pixelMap[lx][ly].rColor = pixel.color
+ pixelMap[lx][ly].color = pixel.color
}
} else if (!isEmpty(lx, ly, true)){
if (pixelMap[lx][ly].element != pixel.rayElement && pixel.rayStoppedByWalls){
@@ -2753,6 +2754,7 @@ elements.ray_emitter = {
} else if (pixelMap[lx][ly].element == "ray" && pixel.rayElement == "ray"){
pixelMap[lx][ly].rColor = pixel.color
pixelMap[lx][ly].life = 30
+ pixelMap[lx][ly].color = pixel.color
}
}
}
From 6638a35726a20d067ee65206fa6062d01fb9d928 Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sat, 11 May 2024 20:20:20 -0400
Subject: [PATCH 13/23] rty
---
mods/nousersthings.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 4ae5f65f..79748884 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2709,8 +2709,7 @@ elements.ray_emitter = {
if (!rayans) { return }
rayElement = mostSimilarElement(rayans);
var rayans2 = prompt("Should the ray stop by walls? Write true or false.",(rayStoppedByWalls||false));
- if (!rayans2) { rayans2 = false } else { rayans2 = true }
- rayStoppedByWalls = rayans2
+ if (rayans2 == "false"){rayStoppedByWalls = false} else {rayStoppedByWalls = true}
},
hoverStat: function(pixel){
return pixel.rayElement.toUpperCase() || "unset"
From 92ee76fc24aba61dcfae5e38b36e351df8fabefb Mon Sep 17 00:00:00 2001
From: feeshmaster <125420779+feeshmaster@users.noreply.github.com>
Date: Sat, 11 May 2024 21:01:37 -0500
Subject: [PATCH 14/23] Update debugRework.js
fixed a little bug
---
mods/debugRework.js | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/mods/debugRework.js b/mods/debugRework.js
index ca437ff2..7a432450 100644
--- a/mods/debugRework.js
+++ b/mods/debugRework.js
@@ -69,15 +69,15 @@ let cssForDebug = `
}
`,
head = document.head || document.getElementsByTagName('head')[0],
- style = document.createElement('style');
+ styleElem = document.createElement('style');
-head.appendChild(style);
+head.appendChild(styleElem);
-style.type = 'text/css';
-if (style.styleSheet) {
- style.styleSheet.cssText = cssForDebug;
+styleElem.type = 'text/css';
+if (styleElem.styleSheet) {
+ styleElem.styleSheet.cssText = cssForDebug;
} else {
- style.appendChild(document.createTextNode(cssForDebug));
+ styleElem.appendChild(document.createTextNode(cssForDebug));
};
let debugMenu = document.createElement("div");
debugMenu.innerHTML = `
From 204b285e7d5a18474dcd87901286a0f6c46009ae Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sun, 12 May 2024 09:51:07 -0400
Subject: [PATCH 15/23] information update
---
mods/nousersthings.js | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 79748884..46e02923 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2708,11 +2708,11 @@ elements.ray_emitter = {
var rayans = prompt("Please input the desired element of this ray emitter",(rayElement||undefined));
if (!rayans) { return }
rayElement = mostSimilarElement(rayans);
- var rayans2 = prompt("Should the ray stop by walls? Write true or false.",(rayStoppedByWalls||false));
+ var rayans2 = prompt("Should the ray be stopped by walls? Write true or false.",(rayStoppedByWalls||false));
if (rayans2 == "false"){rayStoppedByWalls = false} else {rayStoppedByWalls = true}
},
hoverStat: function(pixel){
- return pixel.rayElement.toUpperCase() || "unset"
+ return (pixel.rayElement.toUpperCase() || "unset") + ", " + (pixel.rayStoppedByWalls.toString().toUpperCase() || "unset")
},
tick: function(pixel){
if (pixelTicks == pixel.start){
@@ -2752,7 +2752,7 @@ elements.ray_emitter = {
break;
} else if (pixelMap[lx][ly].element == "ray" && pixel.rayElement == "ray"){
pixelMap[lx][ly].rColor = pixel.color
- pixelMap[lx][ly].life = 30
+ pixelMap[lx][ly].life = 10
pixelMap[lx][ly].color = pixel.color
}
}
@@ -2777,7 +2777,7 @@ elements.ray = {
return pixel.life || "unset"
},
properties: {
- life: 30
+ life: 10
},
tick: function(pixel){
if (pixel.rColor){
@@ -2786,11 +2786,18 @@ elements.ray = {
pixel.rgb = [255,255,255]
}
pixel.life -= 1
- if (pixel.life < 30){
- pixel.color = "rgba("+pixel.rgb[0]+","+pixel.rgb[1]+","+pixel.rgb[2]+","+(pixel.life/30)+")"
+ if (pixel.life < 10){
+ pixel.color = "rgba("+pixel.rgb[0]+","+pixel.rgb[1]+","+pixel.rgb[2]+","+(pixel.life/10)+")"
} else {pixel.color = "rgba("+pixel.rgb[0]+","+pixel.rgb[1]+","+pixel.rgb[2]+",1)"}
if (pixel.life <= 0){
deletePixel(pixel.x, pixel.y)
}
+ },
+ canPlace: true,
+ tool: function(pixel){
+ if (pixel.element == "ray"){
+ pixel.life = 10
+ pixel.color = pixel.rColor
+ }
}
}
\ No newline at end of file
From 230c2885a07b16fc11524028ab7adafa120c6180 Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sun, 12 May 2024 15:57:45 -0400
Subject: [PATCH 16/23] say NO to pipes
---
mods/nousersthings.js | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 46e02923..f0762866 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -377,7 +377,7 @@ elements.destroyable_pipe = {
break;
}
}
- else if (!pixel.con && elements[newPixel.element].movable) { //suck up pixel
+ else if (!pixel.con && elements[newPixel.element].movable && newPixel.element != "ray") { //suck up pixel
pixel.con = newPixel;
deletePixel(newPixel.x,newPixel.y);
pixel.con.x = pixel.x;
@@ -688,7 +688,7 @@ elements.e_pipe = {
break;
}
}
- else if (!pixel.con && elements[newPixel.element].movable && (pixel.charge || pixel.chargeCD)) { //suck up pixel
+ else if (!pixel.con && elements[newPixel.element].movable && (pixel.charge || pixel.chargeCD) && newPixel.element != "ray") { //suck up pixel
pixel.con = newPixel;
deletePixel(newPixel.x,newPixel.y);
pixel.con.x = pixel.x;
@@ -806,7 +806,7 @@ elements.destroyable_e_pipe = {
break;
}
}
- else if (!pixel.con && elements[newPixel.element].movable && (pixel.charge || pixel.chargeCD)) { //suck up pixel
+ else if (!pixel.con && elements[newPixel.element].movable && (pixel.charge || pixel.chargeCD) && newPixel.element != "ray" ) { //suck up pixel
pixel.con = newPixel;
deletePixel(newPixel.x,newPixel.y);
pixel.con.x = pixel.x;
@@ -933,7 +933,7 @@ elements.channel_pipe = {
break;
}
}
- else if (!pixel.con && elements[newPixel.element].movable) { //suck up pixel
+ else if (!pixel.con && elements[newPixel.element].movable && newPixel.element != "ray") { //suck up pixel
pixel.con = newPixel;
deletePixel(newPixel.x,newPixel.y);
pixel.con.x = pixel.x;
@@ -1056,7 +1056,7 @@ elements.destroyable_channel_pipe = {
break;
}
}
- else if (!pixel.con && elements[newPixel.element].movable) { //suck up pixel
+ else if (!pixel.con && elements[newPixel.element].movable && newPixel.element != "ray") { //suck up pixel
pixel.con = newPixel;
deletePixel(newPixel.x,newPixel.y);
pixel.con.x = pixel.x;
@@ -1173,7 +1173,7 @@ elements.bridge_pipe = {
break;
}
}
- else if (!pixel.con && elements[newPixel.element].movable) { //suck up pixel
+ else if (!pixel.con && elements[newPixel.element].movable && newPixel.element != "ray") { //suck up pixel
pixel.con = newPixel;
deletePixel(newPixel.x,newPixel.y);
pixel.con.x = pixel.x;
@@ -1285,7 +1285,7 @@ elements.pipe.tick = function(pixel) {
break;
}
}
- else if (!pixel.con && elements[newPixel.element].movable) { //suck up pixel
+ else if (!pixel.con && elements[newPixel.element].movable && newPixel.element != "ray") { //suck up pixel
pixel.con = newPixel;
deletePixel(newPixel.x,newPixel.y);
pixel.con.x = pixel.x;
From 246c6519045d2dd5ac2f1af178b52acfcd4b0ad7 Mon Sep 17 00:00:00 2001
From: DoobieRalsei <163950752+DoobieRalsei@users.noreply.github.com>
Date: Sun, 12 May 2024 16:44:37 -0700
Subject: [PATCH 17/23] Added fossils mod
---
mods/fossils.js | 238 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 238 insertions(+)
create mode 100644 mods/fossils.js
diff --git a/mods/fossils.js b/mods/fossils.js
new file mode 100644
index 00000000..5534b9b2
--- /dev/null
+++ b/mods/fossils.js
@@ -0,0 +1,238 @@
+elements.fossil = {
+ color: ["#bbb3ae","#b4b4b4","#c0c0c0"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "M2%75|M1|M2%75",
+ ],
+ reactions: {
+ "water": {elem1: "wet_sand", chance: 0.00035},
+ "salt_water": {elem1: "wet_sand", chance: 0.0005},
+ "sugar_water": {elem1: "wet_sand", chance: 0.0004},
+ "seltzer": {elem1: "wet_sand", chance: 0.0004},
+ "dirty_water": {elem1: "wet_sand", chance: 0.0004},
+ "soda": {elem1: "wet_sand", chance: 0.0004},
+ "lichen": {elem1: "dirt", chance: 0.0025},
+ "bone": {elem2: "fossil", chance: 0.000025},
+ "bone_marrow": {elem2: "marrow_fossil", chance: 0.00002},
+ "skull": {elem2: ["human_fossil","human_fossil","fossil"], chance: 0.000025},
+ "wood": {elem2: "petrified_wood", chance: 0.000015},
+ "tree_branch": {elem2: "petrified_wood", chance: 0.000015},
+ "grape": {elem2: "juice", chance: 0.1, color2: "#291824"},
+ "wheat": {elem2: "flour"},
+ "primordial_soup": {elem1: "wet_sand", chance: 0.001}
+ },
+ tempHigh: 950,
+ stateHigh: "magma",
+ category: "life",
+ state: "solid",
+ density: 2600,
+ hardness: 0.55,
+ breakInto: ["rock","gravel","gravel","gravel","sand"],
+};
+
+elements.marrow_fossil = {
+ color: ["#cbb2b3","#c1a8a8","#d0b0b0"],
+ hidden:true,
+ behavior: behaviors.SUPPORTPOWDER,
+ reactions: {
+ "water": {elem1: "wet_sand", chance: 0.00035},
+ "salt_water": {elem1: "wet_sand", chance: 0.0005},
+ "sugar_water": {elem1: "wet_sand", chance: 0.0004},
+ "seltzer": {elem1: "wet_sand", chance: 0.0004},
+ "dirty_water": {elem1: "wet_sand", chance: 0.0004},
+ "soda": {elem1: "wet_sand", chance: 0.0004},
+ "lichen": {elem1: "dirt", chance: 0.0025},
+ "bone": {elem2: "fossil", chance: 0.000025},
+ "bone_marrow": {elem2: "marrow_fossil", chance: 0.00002},
+ "skull": {elem2: ["human_fossil","human_fossil","fossil"], chance: 0.000025},
+ "wood": {elem2: "petrified_wood", chance: 0.000015},
+ "tree_branch": {elem2: "petrified_wood", chance: 0.000015},
+ "grape": {elem2: "juice", chance: 0.1, color2: "#291824"},
+ "wheat": {elem2: "flour"},
+ "primordial_soup": {elem1: "wet_sand", chance: 0.001}
+ },
+ tempHigh: 950,
+ stateHigh: "magma",
+ category: "life",
+ state: "solid",
+ density: 2550,
+ hardness: 0.55,
+ breakInto: ["rock","gravel","gravel","gravel","sand"],
+};
+
+elements.human_fossil = {
+ color: ["#bbb3ae","#b4b4b4","#c0c0c0"],
+ hidden:true,
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "M2%50|M1|M2%50",
+ ],
+ reactions: {
+ "water": {elem1: "wet_sand", chance: 0.00035},
+ "salt_water": {elem1: "wet_sand", chance: 0.0005},
+ "sugar_water": {elem1: "wet_sand", chance: 0.0004},
+ "seltzer": {elem1: "wet_sand", chance: 0.0004},
+ "dirty_water": {elem1: "wet_sand", chance: 0.0004},
+ "soda": {elem1: "wet_sand", chance: 0.0004},
+ "lichen": {elem1: "dirt", chance: 0.0025},
+ "bone": {elem2: "fossil", chance: 0.000025},
+ "bone_marrow": {elem2: "marrow_fossil", chance: 0.00002},
+ "skull": {elem2: ["human_fossil","human_fossil","fossil"], chance: 0.000025},
+ "wood": {elem2: "petrified_wood", chance: 0.000015},
+ "tree_branch": {elem2: "petrified_wood", chance: 0.000015},
+ "grape": {elem2: "juice", chance: 0.1, color2: "#291824"},
+ "wheat": {elem2: "flour"},
+ "primordial_soup": {elem1: "wet_sand", chance: 0.001}
+ },
+ tempHigh: 950,
+ stateHigh: "magma",
+ category: "life",
+ state: "solid",
+ density: 2600,
+ hardness: 0.55,
+ breakInto: ["rock","gravel","gravel","gravel","sand"],
+};
+
+elements.petrified_wood = {
+ color: ["#4e4e3e","#464646","#52533a"],
+ hidden:true,
+ behavior: behaviors.STURDYPOWDER,
+ reactions: {
+ "water": {elem1: "wet_sand", chance: 0.00035},
+ "salt_water": {elem1: "wet_sand", chance: 0.0005},
+ "sugar_water": {elem1: "wet_sand", chance: 0.0004},
+ "seltzer": {elem1: "wet_sand", chance: 0.0004},
+ "dirty_water": {elem1: "wet_sand", chance: 0.0004},
+ "soda": {elem1: "wet_sand", chance: 0.0004},
+ "lichen": {elem1: "dirt", chance: 0.0025},
+ "bone": {elem2: "fossil", chance: 0.000025},
+ "bone_marrow": {elem2: "marrow_fossil", chance: 0.00002},
+ "skull": {elem2: ["human_fossil","human_fossil","fossil"], chance: 0.000025},
+ "wood": {elem2: "petrified_wood", chance: 0.000015},
+ "tree_branch": {elem2: "petrified_wood", chance: 0.000015},
+ "grape": {elem2: "juice", chance: 0.1, color2: "#291824"},
+ "wheat": {elem2: "flour"},
+ "primordial_soup": {elem1: "wet_sand", chance: 0.001}
+ },
+ tempHigh: 950,
+ stateHigh: "magma",
+ category: "life",
+ state: "solid",
+ density: 2600,
+ hardness: 0.55,
+ breakInto: ["rock","rock","gravel","gravel","gravel","gravel","gravel","sawdust"],
+};
+
+elements.skull = {
+ color: "#d9d9d9",
+ hidden:true,
+ behavior: behaviors.SUPPORT,
+ reactions: {
+ "water": { elem2:"broth", tempMin:70, color2:"#d7db69" },
+ "salt_water": { elem2:"broth", tempMin:70, color2:"#d7db69" },
+ "sugar_water": { elem2:"broth", tempMin:70, color2:"#d7db69" },
+ "seltzer": { elem2:"broth", tempMin:70, color2:"#d7db69" },
+ "rock": { "elem1": "fossil", chance:0.00005 },
+ "sand": { "elem1": "fossil", chance:0.000035 },
+ "dirt": { "elem1": "fossil", chance:0.00003 },
+ "tuff": { "elem1": "fossil", chance:0.00005 },
+ "basalt": { "elem1": "fossil", chance:0.00004 },
+ "mudstone": { "elem1": "fossil", chance:0.00004 },
+ "packed_sand": { "elem1": "fossil", chance:0.00004 },
+ "gravel": { "elem1": "fossil", chance:0.000035 },
+ "clay": { "elem1": "fossil", chance:0.00003 },
+ "clay_soil": { "elem1": "fossil", chance:0.00003 },
+ "permafrost": { "elem1": "fossil", chance:0.000035 },
+ "mulch": { "elem1": "fossil", chance:0.00003 },
+ "ant_wall": { "elem1": "fossil", chance:0.00002 },
+ "limestone": { "elem1": "fossil", chance:0.00005 },
+ "quicklime": { "elem1": "fossil", chance:0.000045 },
+ "slaked_lime": { "elem1": "fossil", chance:0.000035 },
+ },
+ category:"life",
+ tempHigh: 760,
+ stateHigh: "quicklime",
+ state: "solid",
+ density: 1500,
+ hardness: 0.5,
+ breakInto: ["quicklime","bone","bone","bone_marrow"]
+},
+
+elements.head.breakInto = ["blood","meat","skull"]
+
+if (!elements.bone.reactions) { elements.bone.reactions = {} }
+ elements.bone.reactions.rock = { "elem1": "fossil", chance:0.00005 };
+ elements.bone.reactions.sand = { "elem1": "fossil", chance:0.000035 };
+ elements.bone.reactions.dirt = { "elem1": "fossil", chance:0.00003 };
+ elements.bone.reactions.tuff = { "elem1": "fossil", chance:0.00005 };
+ elements.bone.reactions.basalt = { "elem1": "fossil", chance:0.00004 };
+ elements.bone.reactions.mudstone = { "elem1": "fossil", chance:0.00004 };
+ elements.bone.reactions.packed_sand = { "elem1": "fossil", chance:0.00004 };
+ elements.bone.reactions.gravel = { "elem1": "fossil", chance:0.000035 };
+ elements.bone.reactions.clay = { "elem1": "fossil", chance:0.00003 };
+ elements.bone.reactions.clay_soil = { "elem1": "fossil", chance:0.00003 };
+ elements.bone.reactions.permafrost = { "elem1": "fossil", chance:0.000035 };
+ elements.bone.reactions.mulch = { "elem1": "fossil", chance:0.00003 };
+ elements.bone.reactions.ant_wall = { "elem1": "fossil", chance:0.00002 };
+ elements.bone.reactions.limestone = { "elem1": "fossil", chance:0.00005 };
+ elements.bone.reactions.quicklime = { "elem1": "fossil", chance:0.000045 };
+ elements.bone.reactions.slaked_lime = { "elem1": "fossil", chance:0.000035 };
+
+
+if (!elements.bone_marrow.reactions) { elements.bone_marrow.reactions = {} }
+elements.bone_marrow.reactions.rock = { "elem1": "marrow_fossil", chance:0.00005 };
+elements.bone_marrow.reactions.sand = { "elem1": "marrow_fossil", chance:0.000035 };
+elements.bone_marrow.reactions.dirt = { "elem1": "marrow_fossil", chance:0.00003 };
+elements.bone_marrow.reactions.tuff = { "elem1": "marrow_fossil", chance:0.00005 };
+elements.bone_marrow.reactions.basalt = { "elem1": "marrow_fossil", chance:0.00004 };
+elements.bone_marrow.reactions.mudstone = { "elem1": "marrow_fossil", chance:0.00004 };
+elements.bone_marrow.reactions.packed_sand = { "elem1": "marrow_fossil", chance:0.00004 };
+elements.bone_marrow.reactions.gravel = { "elem1": "marrow_fossil", chance:0.000035 };
+elements.bone_marrow.reactions.clay = { "elem1": "marrow_fossil", chance:0.00003 };
+elements.bone_marrow.reactions.clay_soil = { "elem1": "marrow_fossil", chance:0.00003 };
+elements.bone_marrow.reactions.permafrost = { "elem1": "marrow_fossil", chance:0.000035 };
+elements.bone_marrow.reactions.mulch = { "elem1": "marrow_fossil", chance:0.00003 };
+elements.bone_marrow.reactions.ant_wall = { "elem1": "marrow_fossil", chance:0.00002 };
+elements.bone_marrow.reactions.limestone = { "elem1": "marrow_fossil", chance:0.00005 };
+elements.bone_marrow.reactions.quicklime = { "elem1": "marrow_fossil", chance:0.000045 };
+elements.bone_marrow.reactions.slaked_lime = { "elem1": "marrow_fossil", chance:0.000035 };
+
+
+if (!elements.wood.reactions) { elements.wood.reactions = {} }
+elements.wood.reactions.rock = { "elem1": "petrified_wood", chance:0.0005 };
+elements.wood.reactions.sand = { "elem1": "petrified_wood", chance:0.00035 };
+elements.wood.reactions.dirt = { "elem1": "petrified_wood", chance:0.0003 };
+elements.wood.reactions.tuff = { "elem1": "petrified_wood", chance:0.0005 };
+elements.wood.reactions.basalt = { "elem1": "petrified_wood", chance:0.0004 };
+elements.wood.reactions.mudstone = { "elem1": "petrified_wood", chance:0.0004 };
+elements.wood.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.0004 };
+elements.wood.reactions.gravel = { "elem1": "petrified_wood", chance:0.00035 };
+elements.wood.reactions.clay = { "elem1": "petrified_wood", chance:0.0003 };
+elements.wood.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.0003 };
+elements.wood.reactions.permafrost = { "elem1": "petrified_wood", chance:0.00035 };
+elements.wood.reactions.mulch = { "elem1": "petrified_wood", chance:0.0003 };
+elements.wood.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.0002 };
+elements.wood.reactions.limestone = { "elem1": "petrified_wood", chance:0.0005 };
+elements.wood.reactions.quicklime = { "elem1": "petrified_wood", chance:0.00045 };
+elements.wood.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.00035 };
+
+
+if (!elements.tree_branch.reactions) { elements.tree_branch.reactions = {} }
+elements.tree_branch.reactions.rock = { "elem1": "petrified_wood", chance:0.0005 };
+elements.tree_branch.reactions.sand = { "elem1": "petrified_wood", chance:0.00035 };
+elements.tree_branch.reactions.dirt = { "elem1": "petrified_wood", chance:0.0003 };
+elements.tree_branch.reactions.tuff = { "elem1": "petrified_wood", chance:0.0005 };
+elements.tree_branch.reactions.basalt = { "elem1": "petrified_wood", chance:0.0004 };
+elements.tree_branch.reactions.mudstone = { "elem1": "petrified_wood", chance:0.0004 };
+elements.tree_branch.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.0004 };
+elements.tree_branch.reactions.gravel = { "elem1": "petrified_wood", chance:0.00035 };
+elements.tree_branch.reactions.clay = { "elem1": "petrified_wood", chance:0.0003 };
+elements.tree_branch.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.0003 };
+elements.tree_branch.reactions.permafrost = { "elem1": "petrified_wood", chance:0.00035 };
+elements.tree_branch.reactions.mulch = { "elem1": "petrified_wood", chance:0.0003 };
+elements.tree_branch.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.0002 };
+elements.tree_branch.reactions.limestone = { "elem1": "petrified_wood", chance:0.0005 };
+elements.tree_branch.reactions.quicklime = { "elem1": "petrified_wood", chance:0.00045 };
+elements.tree_branch.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.00035 };
From 929ae3c437957165074aa3ecce9e3952b4e68dd6 Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
<92590792+JustAGenericUsername@users.noreply.github.com>
Date: Sun, 12 May 2024 19:49:19 -0400
Subject: [PATCH 18/23] woah thats specific
---
mods/nousersthings.js | 98 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index f0762866..de772824 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2800,4 +2800,102 @@ elements.ray = {
pixel.color = pixel.rColor
}
}
+}
+var specificRayStart = 0
+var specificRayEnd = 20
+var specificRayAngle = 0
+var stopAtElement = "wall"
+elements.specific_ray_emitter = {
+ color: "#e73e63",
+ behavior: behaviors.WALL,
+ category: "machines",
+ movable: false,
+ onSelect: function(pixel){
+ var rayans = prompt("Please input the desired element of this ray emitter",(rayElement||undefined));
+ if (!rayans) { return }
+ rayElement = mostSimilarElement(rayans);
+ var rayans2 = prompt("Should the ray be stopped by walls? Write true or false.",(rayStoppedByWalls||false));
+ if (rayans2 == "false"){rayStoppedByWalls = false} else {rayStoppedByWalls = true}
+ var rayans3 = prompt("How much should the beginning of the ray be offset from the emitter?", (specificRayStart||0));
+ if (!rayans3) { return }
+ specificRayStart = rayans3
+ var rayans4 = prompt("How much should the end of the ray be offset from the emitter?", (specificRayEnd||0));
+ if (!rayans4) { return }
+ specificRayEnd = rayans4
+ var rayans5 = prompt("What angle should the ray be emitted at? Type anything that isnt a number to use default angle logic.", (specificRayAngle||0));
+ if (!rayans5) { return }
+ specificRayAngle = rayans5
+ if (isNaN(parseFloat(specificRayAngle))){
+ specificRayAngle = "nah"
+ }
+ var rayans6 = prompt("What element should the ray stop at?", (stopAtElement||"wall"));
+ if (!rayans6) { return }
+ stopAtElement = mostSimilarElement(rayans6)
+ },
+ hoverStat: function(pixel){
+ return (pixel.rayElement.toUpperCase() || "unset") + ", " + (pixel.rayStoppedByWalls.toString().toUpperCase() || "unset") + ", " + (pixel.specificRayStart || "unset") + ", " + (pixel.specificRayEnd || "unset") + ", " + (pixel.specificRayAngle || "unset")
+ },
+ tick: function(pixel){
+ if (pixelTicks == pixel.start){
+ pixel.rayElement = rayElement
+ pixel.rayStoppedByWalls = rayStoppedByWalls
+ pixel.specificRayStart = specificRayStart
+ pixel.specificRayEnd = specificRayEnd
+ pixel.specificRayAngle = specificRayAngle
+ pixel.stopAtElement = stopAtElement
+ }
+ 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].charge && pixelMap[x][y].element == "wire"){
+ var dir = [0-squareCoords[i][0], 0-squareCoords[i][1]]
+ let startx, starty, endx, endy, magnitude
+ if (pixel.specificRayAngle == "nah"){
+ startx = pixel.x+(dir[0]*specificRayStart)
+ starty = pixel.y+(dir[1]*specificRayStart)
+ magnitude = specificRayEnd
+ endx = startx+(magnitude*dir[0])
+ endy = starty+(magnitude*dir[1])
+ } else {
+ let angleInRadians = pixel.specificRayAngle * Math.PI / 180;
+ console.log("Angle in radians is " + angleInRadians)
+ dir = [(Math.cos(angleInRadians)), (Math.sin(angleInRadians))]
+ startx = pixel.x+Math.round((dir[0]*specificRayStart))
+ starty = pixel.y+Math.round((dir[1]*specificRayStart))
+ magnitude = specificRayEnd
+ endx = startx+Math.round((magnitude*dir[0]))
+ endy = starty+Math.round((magnitude*dir[1]))
+ }
+ console.log("Direction seems to be " + dir)
+ var jcoords = lineCoords(startx, starty, endx, endy, 1)
+ //console.log(startx + " is the starting x, " + starty + " is the starting y, " + endx + " is the ending x, " + endy + " is the ending y. Result is " + jcoords)
+ for (var j = 0; j < jcoords.length; j++) {
+ var lcoord = jcoords[j];
+ var lx = lcoord[0];
+ var ly = lcoord[1];
+ // console.log(lcoord)
+ if (isEmpty(lx,ly)){
+ createPixel(pixel.rayElement, lx, ly)
+ pixelMap[lx][ly].temp = pixelMap[x][y].temp
+ if (pixel.rayElement == "ray"){
+ pixelMap[lx][ly].rColor = pixel.color
+ pixelMap[lx][ly].color = pixel.color
+ }
+ } else if (!isEmpty(lx, ly, true)){
+ if ((pixelMap[lx][ly].element != pixel.rayElement && pixel.rayStoppedByWalls) || pixelMap[lx][ly].element == pixel.stopAtElement){
+ break;
+ } else if (pixelMap[lx][ly].element == "ray" && pixel.rayElement == "ray"){
+ pixelMap[lx][ly].rColor = pixel.color
+ pixelMap[lx][ly].life = 10
+ pixelMap[lx][ly].color = pixel.color
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ insulate: true,
}
\ No newline at end of file
From d323c152c65e41a20085431275ffa6c22772b3e2 Mon Sep 17 00:00:00 2001
From: DoobieRalsei <163950752+DoobieRalsei@users.noreply.github.com>
Date: Mon, 13 May 2024 08:46:42 -0700
Subject: [PATCH 19/23] Petrified wood less common
---
mods/fossils.js | 64 ++++++++++++++++++++++++-------------------------
1 file changed, 32 insertions(+), 32 deletions(-)
diff --git a/mods/fossils.js b/mods/fossils.js
index 5534b9b2..fa793364 100644
--- a/mods/fossils.js
+++ b/mods/fossils.js
@@ -201,38 +201,38 @@ elements.bone_marrow.reactions.slaked_lime = { "elem1": "marrow_fossil", chance:
if (!elements.wood.reactions) { elements.wood.reactions = {} }
-elements.wood.reactions.rock = { "elem1": "petrified_wood", chance:0.0005 };
-elements.wood.reactions.sand = { "elem1": "petrified_wood", chance:0.00035 };
-elements.wood.reactions.dirt = { "elem1": "petrified_wood", chance:0.0003 };
-elements.wood.reactions.tuff = { "elem1": "petrified_wood", chance:0.0005 };
-elements.wood.reactions.basalt = { "elem1": "petrified_wood", chance:0.0004 };
-elements.wood.reactions.mudstone = { "elem1": "petrified_wood", chance:0.0004 };
-elements.wood.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.0004 };
-elements.wood.reactions.gravel = { "elem1": "petrified_wood", chance:0.00035 };
-elements.wood.reactions.clay = { "elem1": "petrified_wood", chance:0.0003 };
-elements.wood.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.0003 };
-elements.wood.reactions.permafrost = { "elem1": "petrified_wood", chance:0.00035 };
-elements.wood.reactions.mulch = { "elem1": "petrified_wood", chance:0.0003 };
-elements.wood.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.0002 };
-elements.wood.reactions.limestone = { "elem1": "petrified_wood", chance:0.0005 };
-elements.wood.reactions.quicklime = { "elem1": "petrified_wood", chance:0.00045 };
-elements.wood.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.00035 };
+elements.wood.reactions.rock = { "elem1": "petrified_wood", chance:0.000045 };
+elements.wood.reactions.sand = { "elem1": "petrified_wood", chance:0.00003 };
+elements.wood.reactions.dirt = { "elem1": "petrified_wood", chance:0.000025 };
+elements.wood.reactions.tuff = { "elem1": "petrified_wood", chance:0.000045 };
+elements.wood.reactions.basalt = { "elem1": "petrified_wood", chance:0.000035 };
+elements.wood.reactions.mudstone = { "elem1": "petrified_wood", chance:0.000035 };
+elements.wood.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.000035 };
+elements.wood.reactions.gravel = { "elem1": "petrified_wood", chance:0.00003 };
+elements.wood.reactions.clay = { "elem1": "petrified_wood", chance:0.000025 };
+elements.wood.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.000025 };
+elements.wood.reactions.permafrost = { "elem1": "petrified_wood", chance:0.00003 };
+elements.wood.reactions.mulch = { "elem1": "petrified_wood", chance:0.000025 };
+elements.wood.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.000015 };
+elements.wood.reactions.limestone = { "elem1": "petrified_wood", chance:0.000045 };
+elements.wood.reactions.quicklime = { "elem1": "petrified_wood", chance:0.00004 };
+elements.wood.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.00003 };
if (!elements.tree_branch.reactions) { elements.tree_branch.reactions = {} }
-elements.tree_branch.reactions.rock = { "elem1": "petrified_wood", chance:0.0005 };
-elements.tree_branch.reactions.sand = { "elem1": "petrified_wood", chance:0.00035 };
-elements.tree_branch.reactions.dirt = { "elem1": "petrified_wood", chance:0.0003 };
-elements.tree_branch.reactions.tuff = { "elem1": "petrified_wood", chance:0.0005 };
-elements.tree_branch.reactions.basalt = { "elem1": "petrified_wood", chance:0.0004 };
-elements.tree_branch.reactions.mudstone = { "elem1": "petrified_wood", chance:0.0004 };
-elements.tree_branch.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.0004 };
-elements.tree_branch.reactions.gravel = { "elem1": "petrified_wood", chance:0.00035 };
-elements.tree_branch.reactions.clay = { "elem1": "petrified_wood", chance:0.0003 };
-elements.tree_branch.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.0003 };
-elements.tree_branch.reactions.permafrost = { "elem1": "petrified_wood", chance:0.00035 };
-elements.tree_branch.reactions.mulch = { "elem1": "petrified_wood", chance:0.0003 };
-elements.tree_branch.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.0002 };
-elements.tree_branch.reactions.limestone = { "elem1": "petrified_wood", chance:0.0005 };
-elements.tree_branch.reactions.quicklime = { "elem1": "petrified_wood", chance:0.00045 };
-elements.tree_branch.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.00035 };
+elements.tree_branch.reactions.rock = { "elem1": "petrified_wood", chance:0.00005 };
+elements.tree_branch.reactions.sand = { "elem1": "petrified_wood", chance:0.000035 };
+elements.tree_branch.reactions.dirt = { "elem1": "petrified_wood", chance:0.00003 };
+elements.tree_branch.reactions.tuff = { "elem1": "petrified_wood", chance:0.00005 };
+elements.tree_branch.reactions.basalt = { "elem1": "petrified_wood", chance:0.00004 };
+elements.tree_branch.reactions.mudstone = { "elem1": "petrified_wood", chance:0.00004 };
+elements.tree_branch.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.00004 };
+elements.tree_branch.reactions.gravel = { "elem1": "petrified_wood", chance:0.000035 };
+elements.tree_branch.reactions.clay = { "elem1": "petrified_wood", chance:0.00003 };
+elements.tree_branch.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.00003 };
+elements.tree_branch.reactions.permafrost = { "elem1": "petrified_wood", chance:0.000035 };
+elements.tree_branch.reactions.mulch = { "elem1": "petrified_wood", chance:0.00003 };
+elements.tree_branch.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.00002 };
+elements.tree_branch.reactions.limestone = { "elem1": "petrified_wood", chance:0.00005 };
+elements.tree_branch.reactions.quicklime = { "elem1": "petrified_wood", chance:0.000045 };
+elements.tree_branch.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.000035 };
From 2b25a1bceee027e5d8453518de6b1e1d6d5c4962 Mon Sep 17 00:00:00 2001
From: DoobieRalsei <163950752+DoobieRalsei@users.noreply.github.com>
Date: Mon, 13 May 2024 08:49:23 -0700
Subject: [PATCH 20/23] Dead bug breaks into calcium
---
mods/fossils.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mods/fossils.js b/mods/fossils.js
index fa793364..daaadd6f 100644
--- a/mods/fossils.js
+++ b/mods/fossils.js
@@ -121,7 +121,6 @@ elements.petrified_wood = {
category: "life",
state: "solid",
density: 2600,
- hardness: 0.55,
breakInto: ["rock","rock","gravel","gravel","gravel","gravel","gravel","sawdust"],
};
@@ -162,6 +161,8 @@ elements.skull = {
elements.head.breakInto = ["blood","meat","skull"]
+elements.dead_bug.breakInto = ["calcium","calcium","calcium","quicklime"]
+
if (!elements.bone.reactions) { elements.bone.reactions = {} }
elements.bone.reactions.rock = { "elem1": "fossil", chance:0.00005 };
elements.bone.reactions.sand = { "elem1": "fossil", chance:0.000035 };
From bbb79784742a04928c74e627760ef5ef3a376153 Mon Sep 17 00:00:00 2001
From: DoobieRalsei <163950752+DoobieRalsei@users.noreply.github.com>
Date: Mon, 13 May 2024 09:07:45 -0700
Subject: [PATCH 21/23] Amber can break into DNA
---
mods/fossils.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mods/fossils.js b/mods/fossils.js
index daaadd6f..1f5d3b15 100644
--- a/mods/fossils.js
+++ b/mods/fossils.js
@@ -163,6 +163,8 @@ elements.head.breakInto = ["blood","meat","skull"]
elements.dead_bug.breakInto = ["calcium","calcium","calcium","quicklime"]
+elements.amber.breakInto = ["dna","dna","sap","sap","sap","sap","sap","dead_bug"]
+
if (!elements.bone.reactions) { elements.bone.reactions = {} }
elements.bone.reactions.rock = { "elem1": "fossil", chance:0.00005 };
elements.bone.reactions.sand = { "elem1": "fossil", chance:0.000035 };
From 97a5bebd53440be9516fdecbf4e1ab363434c8a2 Mon Sep 17 00:00:00 2001
From: DoobieRalsei <163950752+DoobieRalsei@users.noreply.github.com>
Date: Mon, 13 May 2024 09:14:47 -0700
Subject: [PATCH 22/23] Amber rework
---
mods/fossils.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/mods/fossils.js b/mods/fossils.js
index 1f5d3b15..3bd63fdc 100644
--- a/mods/fossils.js
+++ b/mods/fossils.js
@@ -165,6 +165,10 @@ elements.dead_bug.breakInto = ["calcium","calcium","calcium","quicklime"]
elements.amber.breakInto = ["dna","dna","sap","sap","sap","sap","sap","dead_bug"]
+elements.amber.tempHigh = 185
+
+elements.amber.stateHigh = ["sap","sap","sap","calcium","sugar"]
+
if (!elements.bone.reactions) { elements.bone.reactions = {} }
elements.bone.reactions.rock = { "elem1": "fossil", chance:0.00005 };
elements.bone.reactions.sand = { "elem1": "fossil", chance:0.000035 };
From 436646945a29c22ef5a717a01bc809c22b6a0625 Mon Sep 17 00:00:00 2001
From: jakob3797 <167775393+jakob3797@users.noreply.github.com>
Date: Tue, 14 May 2024 12:14:50 -0500
Subject: [PATCH 23/23] Update Lab.js
U might need to change the controls and than it will work
---
mods/Lab.js | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 169 insertions(+), 5 deletions(-)
diff --git a/mods/Lab.js b/mods/Lab.js
index f759f1c4..9304d697 100644
--- a/mods/Lab.js
+++ b/mods/Lab.js
@@ -18,7 +18,7 @@ elements.lab = {
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
- "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:player|XX|XX|XX|XX|XX|XX|CR:wall",
+ "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:player|CR:player_2|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
"CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall",
@@ -119,8 +119,8 @@ if(enabledMods.includes(libraryMod)) {
case 90:
sussyKey = "Z";
break;
- case 72:
- sussyKey = "H";
+ case 86:
+ sussyKey = "V";
break;
};
});
@@ -191,7 +191,7 @@ if(enabledMods.includes(libraryMod)) {
sussyKey = null;
}
break;
- case "H": //Alt+D is something else in some browsers.
+ case "V": //Alt+D is something else in some browsers.
if(isAlt) {
controllablePixelTryCreatePixelNullCheck(userElement,xx+1,yy);
};
@@ -221,13 +221,177 @@ if(enabledMods.includes(libraryMod)) {
}
}
},
- }
+ };
} else {
alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`)
enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod)
localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
};
+
+var libraryMod = "mods/code_library.js";
+
+if(enabledMods.includes(libraryMod)) {
+ sussyKey = null;
+ isShift = false;
+ isAlt = false;
+
+ document.addEventListener("keydown", function(modifierDownListener) {
+ // User presses shift
+ if (modifierDownListener.keyCode == 16) {
+ isShift = true;
+ }
+ // User presses alt
+ if (modifierDownListener.keyCode == 18) {
+ isAlt = true;
+ }
+ });
+
+ document.addEventListener("keyup", function(modifierUpListener) {
+ // User releases shift
+ if (modifierUpListener.keyCode == 16) {
+ isShift = false;
+ }
+ // User releases alt
+ if (modifierUpListener.keyCode == 18) {
+ isAlt = false;
+ }
+ });
+
+ document.addEventListener("keyup", function(sussyListener) {
+ switch (sussyListener.keyCode) {
+ case 84:
+ sussyKey = "T";
+ break;
+ case 70:
+ sussyKey = "F";
+ break;
+ case 72:
+ sussyKey = "H";
+ break;
+ case 71:
+ sussyKey = "G";
+ break;
+ case 81:
+ sussyKey = "Q";
+ break;
+ case 88:
+ sussyKey = "X";
+ break;
+ case 90:
+ sussyKey = "Z";
+ break;
+ case 86:
+ sussyKey = "V";
+ break;
+ };
+ });
+
+ function controllablePixelTryCreatePixelNullCheck(element,x,y) {
+ if(!elements[element]) { //catch the null
+ return false;
+ };
+ if(isEmpty(x,y)) {
+ tryCreatePixel(element,x,y);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ elements.player_2 = {
+ color: "#FFFFFF",
+ colorOn: "#FFFF00",
+ behavior: behaviors.WALL,
+ state: "solid",
+ density: 2000,
+ maxSize: 1,
+ conduct: 1,
+ hardness: 1,
+ tick: function(pixel) {
+ var xx = pixel.x;
+ var yy = pixel.y;
+ userElement = currentElement;
+ if(userElement === pixel.element) {
+ userElement = null;
+ };
+ if(isShift && !isAlt) {
+ sussyKey === "Z" ? pixel.color = "rgb(255,191,127)" : pixel.color = "rgb(255,127,127)";
+ }
+ if(isAlt && !isShift) {
+ sussyKey === "Z" ? pixel.color = "rgb(191,255,127)" : pixel.color = "rgb(127,255,127)";
+ }
+ if(isAlt && isShift) {
+ sussyKey === "Z" ? pixel.color = "rgb(255,255,0)" : pixel.color = "rgb(255,255,127)";
+ }
+ if(!isAlt && !isShift) {
+ sussyKey === "Z" ? pixel.color = "rgb(255,255,191)" : pixel.color = "rgb(255,255,255)";
+ }
+ if(sussyKey !== null) {
+ switch (sussyKey) {
+ case "T":
+ isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy-1) : tryMove(pixel,xx,yy-1);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "F":
+ isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx-1,yy) : tryMove(pixel,xx-1,yy);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "G":
+ isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy+1) : tryMove(pixel,xx,yy+1);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "H":
+ tryMove(pixel,xx+1,yy);
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "V": //Alt+D is something else in some browsers.
+ if(isAlt) {
+ controllablePixelTryCreatePixelNullCheck(userElement,xx+1,yy);
+ };
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "X":
+ explodeAt(xx,yy,5)
+ if(!isShift) {
+ sussyKey = null;
+ }
+ break;
+ case "Z":
+ if (!pixel.charge && !pixel.chargeCD && !isEmpty(pixel.x,pixel.y,true)) {
+ pixel.charge = 1;
+ }
+ if(!isShift === 0) {
+ sussyKey = null;
+ }
+ break;
+ case "Q": //Use if a key gets stuck
+ sussyKey = null;
+ isShift = null;
+ isAlt = null;
+ break;
+ }
+ }
+ },
+ };
+} else {
+ alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`)
+ enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod)
+ localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
+};
+
+
+
// i know it looks messy but it works
// if u dont belive me test it but place it in the center of the canvas