diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js index 9a6c111d..bd368aa8 100644 --- a/mods/a_mod_by_alice.js +++ b/mods/a_mod_by_alice.js @@ -1808,6 +1808,60 @@ try { return returnPixel ? newPixel : true }; + clonedPixel = null; + + elements.clone_painter_picker = { + color: "#ffffff", + tool: function(pixel) { + var newPixel = structuredClone ? structuredClone(pixel) : JSON.parse(JSON.stringify(pixel)); + delete newPixel.x; + delete newPixel.y; + clonedPixel = newPixel; + logMessage(`Selected the pixel of ${pixel.element} from (${pixel.x},${pixel.y})`); + selectElement("clone_painter") + }, + tick: function(pixel) { + if(clonedPixel) { + adjacentCoords.forEach(function(offsetPair) { + var finalCoords = [offsetPair[0] + pixel.x,offsetPair[1] + pixel.y]; + clonePixel(clonedPixel,...finalCoords) + }); + } + }, + onSelect: function() { + if(!clonedPixel) { + logMessage("Select the pixel you want to duplicate"); + } + }, + maxSize: 1, + category: "special", + state: "solid", + density: 150000, + desc: "This selects the pixel that the clone_painter element will duplicate." + }; + + elements.clone_painter = { + color: "#ffffff", + tick: function(pixel) { + var x = pixel.x; //they need to be used after the pixel is removed + var y = pixel.y; + deletePixel(x,y); + if(clonedPixel) { + clonePixel(clonedPixel,x,y) + }; + return + }, + category: "tools", + density: 150000, + onSelect: function() { + if(!clonedPixel) { + logMessage("Please select a pixel to clone using the clone painter picker"); + selectElement("clone_painter_picker") + } + }, + desc: `This places (or due to how elements work, changes itself into) duplicates of a previously selected pixel.

Click here to select the clone painter picker to choose which pixel to clone` + }; + function cloneArea(topLeftX,topLeftY,bottomRightX,bottomRightY,newTopLeftX,newTopLeftY,oldPixelHandling_PreClear1_OnlyReplace2_Ignore3=1,errorOnOutOfBounds=false) { var results = {"created": 0, "replaced": 0, "deleted": 0, "skipped": 0, "skipped_OOB": 0}; for(var x = topLeftX; x <= bottomRightX; x++) { @@ -3666,7 +3720,6 @@ color1 and color2 spread through striped paint like dye does with itself. col gameLoaded = true }; - //MORE CONFIGURABLE EXPLOSIONS (explodeAtPlus) ## velocityBlacklist = []; @@ -27448,7 +27501,7 @@ Pixel size (rendering only): (Use if the save looks cut o elements.color_smoke.tempHigh = 610; elements.color_smoke.stateHigh = "rainbow_fire"; - //I guess other worlds do still fall under the purview of TGJS + //I guess other worlds do still fall under the purview of TGJS (future alice: i forgot what tgjs stands for) function nellsunColor(pixel) { if (pixel.temp < 0) { pixel.color = pixelColorPick(pixel,"#615e5e"); var c=0 } else if (pixel.temp < 300) { pixel.color = pixelColorPick(pixel,"#664962"); var c=0 } @@ -45068,7 +45121,7 @@ Make sure to save your command in a file if you want to add this preset again.` document.getElementsByTagName('head')[0].appendChild(style2); runAfterButtons(function() { - //try to make the category buttons look nicer + //try to make the category buttons look smaller var cc = document.getElementById("categoryControls"); var cccw = parseFloat(window.getComputedStyle(cc).width.match(/[\d\.]+/)); cc.style.width = (cccw * 2).toString() + "px";