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.jsStart with only 4 elements and unlock more by reacting them together. (Most are not possible)R74n +classic_explosives.jsAdds back 4 explosives removed in v1.9.3R74n classic_textures.jsUse textures from early versions of the gameR74n color_everything.jsAllows every element to have a custom colorR74n -devtests.jsExperimental features from the Sandboxels developer; Currently there is Earthquake in WeaponsR74n +devtests.jsExperimental features from the Sandboxels developerR74n edible_everything.jsAllows every element to be mixed into Batter and DoughR74n fools.jsAdds back FOOLS ModeR74n +fools24.jsAdds back the 2024 Multiversal Update (v5.9.1)R74n smooth_water.jsChanges water mechanics so that it flows in one direction until it bounces off of somethingR74n spring.jsMany nature elements, like sakura trees, butterflies, beehives, and moreR74n +survival.jsWith limited resources, you must craft, sell, and buy to progressR74n velocity.jsBeta for explosion velocity, and later wind, which may come to the base game in the futureR74n Tools & Settings -adjustablepixelsize.jsAllows you to set the pixelSize with a URL parameterAlice -betaworldgen.jsadds a more advanced world generation to the gameAlex + +betaworldgen.jsadds a more advanced world generation to the gameAdora betterModManager.jsImprovements to the Mod Managerggod betterSettings.jsAdds additional settings and functionalityggod betterStats.jsSeparate “real” and “set” TPS, meaning you can see what the TPS actually is, instead of only seeing what it’s set tomollthecoder +buildingreplicator.jsScans and replicates builds anywhere on the screen, along with some preset submitted buildsnousernamefound change.jsAdds a tool that only replaces existing pixelsAlice color_tools.jsAdds tools that manipulate colorsAlice controllable_pixel_test.jsAdds 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.jsAdds a tool that deletes every pixel of the element(s) the user clicks onAlice descriptions.jsAdds descriptions to the info page and tooltips of elementsmollthecoder editTools.jsSelections, Copying, Pasting, Cutting, Shapes, and more!ggod +elementEraser.jsAdds a tool that deletes only desired elementSquareScreamYT elementsManager.jsCreate and edit custom elementsggod evenmoretemptools.jsAdds different temperature-modifying tools (±350/tick, NaN, and Infinity)Alice extra_element_info.jsAdds descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanillaMelecie find.jsAdds a find mode that highlights a chosen element as pulsating red and yellow (read commit description)Alice +jaydsfunctions.jsAdds extra tools insane_random_events.jsMassively buffs random eventsAlice +invertscroll.jsInverts the scroll wheel for adjusting brush sizeSquareScreamYT +mobile_shift.jsAdds a button for shift on mobileSquareScreamYT moretools.jsAdds more temperature-modifying tools (±10/tick, ±50/tick, and absolute zero tools)Sightnado move_tools.jsAdds tools that move pixelsAlice noconfirm.jsRemoves all confirmation pop upsmollthecoder @@ -142,12 +150,16 @@ replace_all.jsAdds a way to replace every pixel of an element with another element
Read the commit description for usageAlice replace.jsAdds 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.jsAdds the ability to save and load scenes from files (See the info page of the element)Alice +selective_paint.jsAdds a tool to paint only selected elementsSquareScreamYT stripe_paint.jsAdds a tool to paint with stripesAlice +texturepack.jsAdds tools that let you create and share custom texture packsnousernamefound the_ground.jsAdds several rock types, worldgen settings, and gemstonesAlice Science & Chemistry alcohol.jsAdds methanol, (iso-)propanol, and butanolAlice alkahest.jsAdds the alkahest, a liquid which dissolves anythingAlice +aScientistsWish.jsAdds things that related to science, especially radiationCarbon Monoxide, salmonfishy +bettermetalscrap.jsAllows metal scrap to be melted back into its original materialnousernamefound bigger_star_spawners.jsAdds spawners for larger starsAlice bioooze_and_pyrogens.jsAdds Bio-Ooze from Frackin’ Universe and several heat-producing materials from various games’ modsAlice boiling_things.jsAllows for various elements to be vaporizedAlice @@ -159,17 +171,22 @@ Gemstones.jsAdds more gemstonesSchweeny glenn_gases.jsAdds most gases from the Glenn's Gases mod into SandboxelsAlice grav_mudstones.jsAdds various forms of mudstone with different gravitiesAlice +halogen.jsAdds the missing halogensnousernamefound hidden_ground.jsHides most rock variants from the_ground.js excluding the base rocks and wallsMelecie iocalfaeus_clones.jsAdds Iorefrius, Iolucius, and Ioradius gasAlice +jaydstuff.jsAdds various chemicals and compoundsJayd laetium.jsAdds several fictional elementsAlice liquid_energy.jsAdds liquid versions of the elements in the Energy categoryAlice metals.jsAdds several metalsAlice mixture.jsAllows many chemicals to be mixedlllllllllwith10ls -morechemistry.jsAdds many new chemicals and compounds as well as some new machinesAlex +more_gold.jsAdds Green Goldpixelegend4 +morechemistry.jsAdds many new chemicals and compounds as well as some new machinesAdora moreliquids.jsAdds various liquidste-agma-at nellfire.jsAdds a weird transforming flame and several rock typesAlice Neutronium Mod.jsVariety of scientific elements
ExplosionsStellarX20 neutronium_compressor.jsAdds a compressor (in reference to Minecraft’s Avaritia mod) that compresses 10,000 pixels of an element into a “singularity”Alice +noblegas.jsAdds the missing noble gasesnousernamefound +radioactive.jsAdds every radioactive elements on the periodic table (WIP)kaeud random_rocks.jsRandomly generates rocks on game loadAlice roseyiede.jsAdds several variants of a substance called roseyiedeAlice some_tf_liquids.jsAdds various liquids from the Thermal Foundation Minecraft modAlice @@ -177,89 +194,133 @@ Machines & Technology clone_liquid.jsAdds a liquid form of clonerAlice +combustion.jsAdds components necessary for combustion enginesuptzik conveyance.jsConveyors, operated with and without electricityMelecie +ExtraMachines.jsAdds sensors, energy resources, materials, and moreMecoolnotcool +fine_tuned_cloner.jsAdds a cloner that can spawn at different rates and prevent unwated cloningBatteRaquette58 flipflop.jsToggleable switches; ExplanationFlix gameOfLife.jsConway's Game of Life on a screenggod +logicgates.jsAdds predictable electricity and logic gatesnousernamefound note_block.jsAdds musical Note BlocksAlice nousersthings.jsDestroyable machines, pipe variants, filters, and morenousernamefound portal.jsAdds portals that can teleport pixelsAlice +pullers.jsAdds pixels that pull pixels towards themvoidapex11 pushers.jsAdds pixels that push elements away from themAlice -spouts.jsAdds spouts for all liquidsAlice +spouts.jsAdds spouts for all liquidskaeud state_voids.jsAdds several elements that each delete a specific state of matter (and combinations thereof)Alice switches.jsAdds electrical switches that can be toggledAlice ticking_temp_stuff.jsAdds more heaters and coolersAlice +video.jsAdds a video playerggod waterspout.jsAdds back the old Water Spoutmollthecoder +WhisperingTheory.jsAdds many more variants of heater and coolerkaeud Weapons +aircrafts.jsAdds aircraft and aircraft part pixelsJayd icb.jsAdds various levels of nested cluster bombsAlice life_eater.jsAdds Warhammer 40,000’s Life-Eater Virus and Virus BombsAlice liquid_void.jsAdds a liquid variant of VoidAlice more_breaking.jsAllows for breaking more elements in explosionsAlice rays.jsAdds more Ray typesAlice +rays++.jsAdds a couple more raysuptzik +weapons.jsAdds varieties of different weapons Jayd Food & Cooking +aChefsDream.jsAdds more foods, animals, tools and many other cooking related items. Updates can be found in this YouTube PlaylistSquareScreamYT +aChefsDream_beta.jsBeta testing for aChefsDream. The code can be found on GitHubSquareScreamYT bananas.jsAdds bananas and banana plantsAlice +CherrySoda.jsAdds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda.guzzo86 +community_desserts.jsAdds various desserts from community suggestionsTisquares +greenitemsandmore.jsAdds various green things, including apples and more foodzonneschijn7 ketchup_mod.jsAdds a bunch of ketchup related stuff, plus a few other condimentsNubo318 (main dev), Devi, Alice (contributors) +lemonade.jsAdds lemons and lemonadepersonman / baconthemyth +morefoodsmod.jsAdds more foodsClide4 pizzasstuff.jsNew animals, foods, and plants_ilikepizza_ -sbstuff.jsAdds RiceStefan Blox +potato_chips.jsPotato chips.guzzo86 +sbstuff.jsAdds many foodsstefanblox +soups.jsAdds seasoning and souppixelegend4 +weAllScreamFor.jsAdds ice cream toppingsrottenEgghead Life & Nature +advanced_colonies.jsAdds davlers, creatures with complex coloniesDaviStudios apioforms_pre.jsAn incomplete implementation of elements from the Apioform GameAlice bacteria_mod.jsAdds content from the Bacterium Mod: (Bacteria, Replacer B., Jammer Block)Alice bananas.jsAdds bananas and banana plantsAlice +cat.jsAdds cats and cat foodSquareScreamYT cells.jsAdds several experimental edits of the Cell elementAlice crimson.jsAdds elements relating to the Crimson from TerrariaAlice +dogs.jsAdds a simple dog and dog foodhedera-ivy fairy_chain.jsAdds way too many fairies to fey_and_more.jsAlice fantastic_creatures.jsAdds various animalsMelecie fantasy_elements.jsFantasy creatures and substancespixelegend4 fey_and_more.jsAdds fairies, magic, and a lot of other thingsMelecie +flowers_and_forests.jsadds trees and flowers and things to do with naturepixelegend4 and SquareScreamYT fwibblen.jsAdds a flying creature that turns nickel into itself, and a second creature that does the same to the first oneAlice human_edit.jsImprovements to humansAlice +kopalstuff.jsAdds creatures, spirits, DNA, foods, and moreDaviStudios +lost_souls.jsAdds souls and related elements, the mod can also be found on Githubpixelegend4, SquareScreamYT, salmonfishy miscible_psoup_and_birthpool.jsMakes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical MenagerieAlice mobs.jsAdds Creepers, Zombies, and SkeletonsAlice nocancer.jsRemoves cancer from the game one tick after it is createdmollthecoder nocancer2.jsRemoves cancer from the game altogether. May be incompatible with other mods that spawn cancermollthecoder +nograssgrow.jsPrevents Grass from growingmollthecoder +ocean.jsAdds many Marine lifeSquareScreamYT pizzasstuff.jsNew animals, foods, and plants_ilikepizza_ +plants.jsAdds a wide variety of new plants and fruitsAdora primordial_birthpool.jsA cross between Primordial Soup and Birthpool. Requires F&MAlice spring.jsMany nature elements, like sakura trees, butterflies, beehives, and moreR74n the_ground_og.jsSimplified and more stable version of the_ground.jsAlice the_ground.jsAdds several rock types, worldgen settings, and gemstonesAlice toothpaste.jsTeeth and pasteAlice +volcanic_expansion.jsAdds Obsidian, Pumice, and Andesite rocksJayd Fun & Games -allliquids.jsMade all elements liquidsAlex +10kelements.jsInserts a customizable amount of randomly generated elements into the gamenousernamefound +all_around_fillers.jsAdds directional Filler variantsidk73248 +allliquids.jsMade all elements liquidsAdora amogus.jsAdds a small amogus structureAlice +citybuilding.jsAdds seeds that create miniature buildings and other city-related itemsSquareScreamYT +collab_mod.jsCreated by multiple people, adds random thingsmrapple, ilikepizza, stefanblox +Doom Mod (Unreleased)As seen on TikTok - Not yet available!ggod elem3.jsAdds all elements and combinations from Elemental 3 [Very Large]Sophie +fools+.jsimproves and makes fools.js EXTREMELY annoying.SquareScreamYT funny elements 2022-11-15.jsAdds a few curated randomly-generated elementsAlice -funny_liquid_2.jsAdds urineAlice -funny_liquid_3.jsAdds vomitAlice funny_solid.jsAdds fecesAlice haseulite.jsAdds Loona-related materials with various propertiesAlice -iean.jsAdds lean and its ingredientsAlice lactose_intolerance_and_celiac.jsMakes humans explode on contact with milk, wheat, bread, or toastNubo318 lone_urea.jsAdds urea without the rest of the piss modAlice +maze.jsAdds a solvable maze generatorggod memelists.jsMakes it so you must select elements through a list at the bottom of the page.
We like listsmollthecoder minecraft.jsAdds several things from MinecraftStellarX20 minesweeper.jsA subpar implementation of MinesweeperAlice musicalfruit.jsHumans get gas from eating Beansmollthecoder random_elems.jsCurated randomly generated elementsAlice random_liquids.jsRandomly generates liquids on game loadAlice +sbmixup.jsAdds silly elements from a Mix-Up! gamestefanblox +star_wars.jsAdds various items from Star Wars by DisneySeaPickle754 sus.jsAdds an Among Us crewmateNv7 triggerable_random_powders.jsAdds powders with different abilities, such as heating and coolingAlice troll.jsAdds various dumb elements that iterate randomly on the entire screenAlice -star_wars.jsAdds various items from Star Wars by DisneySeaPickle754 +WhisperingTheory.jsAdds powder and gas variant of heater and coolerkaeud Visual Effects acid_and_shapes.jsWeird visual effects. Enable in SettingsAlice heatglow.jsRed glowing effect for hot metalsnousernamefound invisible_dye.jsAdds elements like Dye and Spray Paint that take the color of the backgroundAlice invisible_wall.jsAdds an element like Wall that takes the color of the backgroundAlice +moreViews.jsMany new rendering modesggod +onecolor.jsMakes all placed pixels single-colorednousernamefound paint_event.jsAdds a random event that randomly paints a circleAlice rainbow_tests.jsAdds variants of the rainbow element with different mathsAlice Shroomboxels.jsA variant of acid_and_shapes.js that uses a different trigonometric functionAlice +singleColor.jsMakes all elements pick one color each time they're drawnstefanblox + +Compilations +a_mod_by_alice.jsA mod combining most of Alice’s mods, and some other thingsAlice +food_mods.jsA mod combining most food modsstefanblox, moss, Tisquares, SquareScreamYT, Adora, pixelegend4, Alice, Nubo318, Clide4, rottenEgghead Technical Libraries & Tests a_bundle_of_tests.jsSeveral test functionsAlice +all_stain.jsMakes every element stain solidsstefanblox betterMenuScreens.jsLibrary for mods to create their own menusggod changePixelDebug.jsMakes the changePixel() function abort and log to console when it tries to change to a non-existent elementAlice changeTempReactionParameter.jsAdds the changeTemp property to modded reactionsAlice 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.jsAdds different temperature-modifying tools (±350/tick, NaN, and Infinity)Alice extra_element_info.jsAdds descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanillaMelecie find.jsAdds a find mode that highlights a chosen element as pulsating red and yellow (read commit description)Alice -jaydsfunctions.jsAdds extra tools +jaydsfunctions.jsAdds extra toolsJayd insane_random_events.jsMassively buffs random eventsAlice invertscroll.jsInverts the scroll wheel for adjusting brush sizeSquareScreamYT mobile_shift.jsAdds a button for shift on mobileSquareScreamYT 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