Merge branch 'main' of https://github.com/R74nCom/sandboxels
This commit is contained in:
commit
a298e94c8b
|
|
@ -161,7 +161,6 @@
|
|||
<tr><td>moretools.js</td><td>Adds more temperature-modifying tools (±10/tick, ±50/tick, and absolute zero tools)</td><td>Sightnado</td></tr>
|
||||
<tr><td>move_tools.js</td><td>Adds tools that move pixels</td><td>Alice</td></tr>
|
||||
<tr><td>noconfirm.js</td><td>Removes all confirmation pop ups</td><td>mollthecoder</td></tr>
|
||||
<tr><td>nopixellimit.js</td><td>Removes the pixel limit</td><td>Jayd</td></tr>
|
||||
<tr><td>page_color.js</td><td>Allows changing the background color outside of the canvas with the “pageColor” query parameter</td><td>Alice</td></tr>
|
||||
<tr><td>pixelResizeTool.js</td><td>Adds a button to change pixel scale</td><td>feeshmaster</td></tr>
|
||||
<tr><td>prompt.js</td><td>Adds a primitive command console</td><td>Alice</td></tr>
|
||||
|
|
@ -334,13 +333,14 @@
|
|||
<tr><td>heatglow.js</td><td>Red glowing effect for hot metals</td><td>nousernamefound</td></tr>
|
||||
<tr><td>invisible_dye.js</td><td>Adds elements like Dye and Spray Paint that take the color of the background</td><td>Alice</td></tr>
|
||||
<tr><td>invisible_wall.js</td><td>Adds an element like Wall that takes the color of the background</td><td>Alice</td></tr>
|
||||
<tr><td>lightmap.js</td><td>Makes light sources glow</td><td>RedBirdly</td></tr>
|
||||
<tr><td>moreViews.js</td><td>Many new rendering modes</td><td>ggod</td></tr>
|
||||
<tr><td>onecolor.js</td><td>Makes all placed pixels single-colored</td><td>nousernamefound</td></tr>
|
||||
<tr><td>paint_event.js</td><td>Adds a random event that randomly paints a circle</td><td>Alice</td></tr>
|
||||
<tr><td>rainbow_tests.js</td><td>Adds variants of the rainbow element with different maths</td><td>Alice</td></tr>
|
||||
<tr><td>shader_by_jayd.js</td><td>Adds a glow around light elements</td><td>Jayd</td></tr>
|
||||
<tr><td>Shroomboxels.js</td><td>A variant of acid_and_shapes.js that uses a different trigonometric function</td><td>Alice</td></tr>
|
||||
<tr><td>singleColor.js</td><td>Makes all elements pick one color each time they're drawn</td><td>stefanblox</td></tr>
|
||||
<tr><td>lightmap.js</td><td>Makes light sources glow</td><td>RedBirdly</td></tr>
|
||||
|
||||
<!----><tr><td class="modCat" colspan="3">Compilations</td></tr><!---->
|
||||
<tr><td>a_mod_by_alice.js</td><td>A mod combining most of Alice’s mods, and some other things</td><td>Alice</td></tr>
|
||||
|
|
@ -383,6 +383,7 @@
|
|||
<tr class="deprecated"><td>humans.js</td><td>Adds humans. Now part of the base game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||
<tr class="deprecated"><td>unhide.js</td><td>Unhides all elements except molten ones. (This functionality now exists as a vanilla setting)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||
<tr class="deprecated"><td>wheel_fix.js</td><td>Attempts to fix the brush scaling too much with the mouse wheel for some people. Deprecated</td><td>Nubo318</td></tr>
|
||||
<tr class="deprecated"><td>nopixellimit.js</td><td>Removes the pixel limit. (now a setting)</td><td>Jayd</td></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
if (!settings.heatglowMode){settings.heatglowMode = 1; saveSettings();}
|
||||
if (!eLists.metals) { eLists.metals = [] }
|
||||
eLists.metals = eLists.metals.concat(["iron", "glass", "copper", "gold", "brass","steel","nickel","zinc","silver","aluminum","bronze","metal_scrap","oxidized_copper","tin","lead", "rose_gold", "tungsten"])
|
||||
if (!eLists.heatBlacklist) {eLists.heatBlacklist = []}
|
||||
eLists.heatBlacklist = eLists.heatBlacklist.concat(["void", "sun", "light", "plasma", "fire", "border", "heater", "superheater"])
|
||||
eLists.heatBlacklist = eLists.heatBlacklist.concat(["void", "sun", "light", "plasma", "fire", "border", "heater", "superheater", "laser", "ray"])
|
||||
function tempToRGB(temp){
|
||||
if (temp <= 6500){
|
||||
return{
|
||||
|
|
@ -58,7 +56,7 @@ renderEachPixel(function(pixel,ctx) {
|
|||
} else {
|
||||
color = oldtempToRgb(pixel.temp, pixel)
|
||||
opacity = color.opacity
|
||||
if (!eLists.metals.includes(pixel.element)){
|
||||
if (!((elements[pixel.element].tempHigh > 400 && elements[elements[pixel.element].stateHigh] && elements[elements[pixel.element].stateHigh].state === "liquid"))){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3282,6 +3282,7 @@ elements.function_machine = {
|
|||
excludeRandom: true,
|
||||
}
|
||||
*/
|
||||
/*
|
||||
elements.galvanized_steel = {
|
||||
color: "#4c585f",
|
||||
behavior: behaviors.WALL,
|
||||
|
|
@ -3327,6 +3328,7 @@ if (!elements.steel.reactions){elements.steel.reactions = {}}
|
|||
elements.steel.reactions.molten_zinc = {elem1: "galvanized_steel", chance: 0.035}
|
||||
if (!elements.molten_zinc.reactions){elements.zinc.reactions = {}}
|
||||
elements.molten_zinc.reactions.steel = {elem1: "null", chance: 0.2}
|
||||
*/
|
||||
elements.super_heat_conductor = {
|
||||
color: "#b66b61",
|
||||
behavior: behaviors.WALL,
|
||||
|
|
@ -3483,15 +3485,12 @@ elements.colored_filler = {
|
|||
properties: {
|
||||
"initalized": false,
|
||||
},
|
||||
onSelect: function(pixel){
|
||||
logMessage("It is reccomended to place this while paused.")
|
||||
},
|
||||
tick: function(pixel){
|
||||
let fillerNeighbors = {}
|
||||
for (var i = 0; i < adjacentCoords.length; i++) {
|
||||
var x = pixel.x+adjacentCoords[i][0];
|
||||
var y = pixel.y+adjacentCoords[i][1];
|
||||
if (isEmpty(x,y)) {
|
||||
if (isEmpty(x,y) && pixel.initalized) {
|
||||
createPixel("colored_filler", x, y)
|
||||
pixelMap[x][y].color = pixel.color;
|
||||
pixelMap[x][y].initalized = true
|
||||
|
|
@ -3531,4 +3530,84 @@ elements.colored_filler = {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let copycatfillerElem = "sand"
|
||||
elements.copycat_filler = {
|
||||
color: elements.random.color,
|
||||
behavior:behaviors.WALL,
|
||||
category: "special",
|
||||
onSelect: function(){
|
||||
let ans1 = prompt("Enter the element you want to use for the copycat filler", copycatfillerElem||"sand")
|
||||
copycatfillerElem = mostSimilarElement(ans1)
|
||||
},
|
||||
tick: function(pixel){
|
||||
let fillerNeighbors = {}
|
||||
if (!pixel.copycatElement){
|
||||
pixel.copycatElement = copycatfillerElem
|
||||
}
|
||||
if (!pixel.rSeed){
|
||||
pixel.rSeed = [Math.random(), Math.random(), Math.random(), Math.random()]
|
||||
}
|
||||
for (var i = 0; i < adjacentCoords.length; i++) {
|
||||
var x = pixel.x+adjacentCoords[i][0];
|
||||
var y = pixel.y+adjacentCoords[i][1];
|
||||
if (isEmpty(x,y)) {
|
||||
createPixel("copycat_filler", x, y)
|
||||
pixelMap[x][y].copycatElement = pixel.copycatElement
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < squareCoords.length; i++) {
|
||||
var x = pixel.x+squareCoords[i][0];
|
||||
var y = pixel.y+squareCoords[i][1];
|
||||
if (!isEmpty(x, y, true)){
|
||||
var otherPixel = pixelMap[x][y];
|
||||
if (otherPixel.element == "copycat_filler" && otherPixel.copycatElement != pixel.copycatElement){
|
||||
fillerNeighbors[otherPixel.copycatElement] = (fillerNeighbors[otherPixel.copycatElement]||0)+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(Object.keys(fillerNeighbors).length > 0){
|
||||
let mostSeenColor = highestValueObjectKey(fillerNeighbors)
|
||||
let opposingCount = sumOfObjectValues(fillerNeighbors)
|
||||
if (Math.random() < neighborRandomChance[opposingCount]){
|
||||
pixel.copycatElement = mostSeenColor;
|
||||
}
|
||||
}
|
||||
},
|
||||
renderer: function(pixel, ctx){
|
||||
if (!pixel.copycatElement){pixel.copycatElement = copycatfillerElem}
|
||||
if (!pixel.rSeed){pixel.rSeed = [Math.random(), Math.random(), Math.random(), Math.random()]}
|
||||
if (typeof elements[pixel.copycatElement].color == "object"){
|
||||
let selectedColor = elements[pixel.copycatElement].color[Math.floor(pixel.rSeed[1]*elements[pixel.copycatElement].color.length)]
|
||||
let rgb = {
|
||||
r: parseInt(selectedColor.match(/\d+/g)[0]),
|
||||
g: parseInt(selectedColor.match(/\d+/g)[1]),
|
||||
b: parseInt(selectedColor.match(/\d+/g)[2])
|
||||
}
|
||||
for (let c in rgb){
|
||||
rgb[c] += Math.floor(pixel.rSeed[0] * (pixel.rSeed[2] > 0.5 ? -1 : 1) * pixel.rSeed[3] * 15);
|
||||
rgb[c] = Math.max(0, Math.min(255, rgb[c]));
|
||||
}
|
||||
if (elements[pixel.copycatElement].glow || elements[pixel.copycatElement].isGas){
|
||||
drawPlus(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y, 1);
|
||||
} else {
|
||||
drawSquare(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y);
|
||||
}
|
||||
} else {
|
||||
let rgb = {
|
||||
r: parseInt(elements[pixel.copycatElement].color.match(/\d+/g)[0]),
|
||||
g: parseInt(elements[pixel.copycatElement].color.match(/\d+/g)[1]),
|
||||
b: parseInt(elements[pixel.copycatElement].color.match(/\d+/g)[2])
|
||||
}
|
||||
for (let c in rgb){
|
||||
rgb[c] += Math.floor(pixel.rSeed[0] * (pixel.rSeed[2] > 0.5 ? -1 : 1) * pixel.rSeed[3] * 15);
|
||||
rgb[c] = Math.max(0, Math.min(255, rgb[c]));
|
||||
}
|
||||
if (elements[pixel.copycatElement].glow || elements[pixel.copycatElement].isGas){
|
||||
drawPlus(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y, 1);
|
||||
} else {
|
||||
drawSquare(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
elements.shader_test = {
|
||||
color: "#FFFFFF",
|
||||
category: "special",
|
||||
renderer: function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,"#ffffff",x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
}
|
||||
elements.fire.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
elements.cold_fire.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
elements.light.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 2);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.75)
|
||||
}
|
||||
}
|
||||
elements.laser.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 2);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.75)
|
||||
}
|
||||
}
|
||||
elements.plasma.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.5)
|
||||
}
|
||||
}
|
||||
elements.electric.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 2);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
elements.heat_ray.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
elements.freeze_ray.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
elements.flash.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.7)
|
||||
}
|
||||
}
|
||||
elements.smoke.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 2);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
elements.radiation.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 2);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.25)
|
||||
}
|
||||
}
|
||||
elements.led_r.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
if (pixel.charge) {
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.5)
|
||||
}
|
||||
else {
|
||||
drawSquare(ctx,pixel.color,pixel.x,pixel.y,1,1)
|
||||
}
|
||||
}
|
||||
}
|
||||
elements.led_g.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
if (pixel.charge) {
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.5)
|
||||
}
|
||||
else {
|
||||
drawSquare(ctx,pixel.color,pixel.x,pixel.y,1,1)
|
||||
}
|
||||
}
|
||||
}
|
||||
elements.led_b.renderer = function(pixel,ctx) {
|
||||
var circlec = circleCoords(pixel.x, pixel.y, 3);
|
||||
for (var i = 0; i < circlec.length; i++){
|
||||
var coord = circlec[i];
|
||||
var x = coord.x;
|
||||
var y = coord.y;
|
||||
if (pixel.charge) {
|
||||
drawSquare(ctx,pixel.color,x,y,1,0.5)
|
||||
}
|
||||
else {
|
||||
drawSquare(ctx,pixel.color,pixel.x,pixel.y,1,1)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue