Version 1.13.1 - December 18, 2025 - G&G Hotfix

~ This is a quick group of bug fixes and improvements following yesterday's update.
+ More Shift-Select functionality:
    + Fuse can turn into an element after charged
    + Filler can turn into an element after cloning itself
    + Heat and Cool tools can specify limits
    + Paint tool can specify a specific element to paint
    + Udder can dispense a specific element
    ~ Distinct border for Shift-Selected element buttons
~ Chlorine Ice kills Virus like gaseous and liquid forms
~ When window is shortened vertically, canvas will shrink to fit screen
[Bug Fixes]
~ Fixed: 2- and 4-wide brushes aren't possible with scroll wheel
~ Fixed: Tea doesn't stain Paper very well
~ Fixed: Fireflies change the color of any pixel they touch
~ Fixed: Slow Cloner can't clone more than one element with Shift-Select
~ Fixed: Slow Cloner doesn't immediately grab element
~ Fixed: E-cloners can clone Walls
~ Fixed: Outline View uses white outline with custom URL backgrounds
~ Fixed: Heaters, Coolers, and Cloners can be mixed without holding Shift
~ Fixed: Language isn't autoselected for Brazilian Portuguese or Chinese
[Technical]
+ chargePixel(pixel, amount?) helper function to easily shock a pixel
+ burnPixel(pixel) helper function to easily ignite a pixel
This commit is contained in:
slweeb 2025-12-18 13:53:49 -05:00
parent 4dbdc48bbd
commit 342504b04c
5 changed files with 550 additions and 391 deletions

View File

@ -113,6 +113,33 @@
<p>The original <a href="https://sandboxels.R74n.com/changelog.txt">plain text version</a> of this is still maintained.</p> <p>The original <a href="https://sandboxels.R74n.com/changelog.txt">plain text version</a> of this is still maintained.</p>
</div> </div>
<h2 id="1.13.1">[Version 1.13.1 - December 18, 2025 - G&amp;G Hotfix]</h2>
<ul>
<li>~ This is a quick group of bug fixes and improvements following yesterday's update.</li>
<li>+ More Shift-Select functionality:</li>
<li> + Fuse can turn into an element after charged</li>
<li> + Filler can turn into an element after cloning itself</li>
<li> + Heat and Cool tools can specify limits</li>
<li> + Paint tool can specify a specific element to paint</li>
<li> + Udder can dispense a specific element</li>
<li> ~ Distinct border for Shift-Selected element buttons</li>
<li>~ Chlorine Ice kills Virus like gaseous and liquid forms</li>
<li>~ When window is shortened vertically, canvas will shrink to fit screen</li>
<li>[Bug Fixes]</li>
<li>~ Fixed: 2- and 4-wide brushes aren't possible with scroll wheel</li>
<li>~ Fixed: Tea doesn't stain Paper very well</li>
<li>~ Fixed: Fireflies change the color of any pixel they touch</li>
<li>~ Fixed: Slow Cloner can't clone more than one element with Shift-Select</li>
<li>~ Fixed: Slow Cloner doesn't immediately grab element</li>
<li>~ Fixed: E-cloners can clone Walls</li>
<li>~ Fixed: Outline View uses white outline with custom URL backgrounds</li>
<li>~ Fixed: Heaters, Coolers, and Cloners can be mixed without holding Shift</li>
<li>~ Fixed: Language isn't autoselected for Brazilian Portuguese or Chinese</li>
<li>[Technical]</li>
<li>+ chargePixel(pixel, amount?) helper function to easily shock a pixel</li>
<li>+ burnPixel(pixel) helper function to easily ignite a pixel</li>
</ul>
<h2 id="1.13">[Version 1.13 - December 17, 2025 - Gizmos & Gadgets]</h2> <h2 id="1.13">[Version 1.13 - December 17, 2025 - Gizmos & Gadgets]</h2>
<ul> <ul>
<li>+ Filter</li> <li>+ Filter</li>
@ -146,7 +173,7 @@
<li>~ Drag tool is faster and smoother</li> <li>~ Drag tool is faster and smoother</li>
<li>~ Pixelated and colorful button borders</li> <li>~ Pixelated and colorful button borders</li>
<li>+ Translations for Swedish</li> <li>+ Translations for Swedish</li>
<li>+ Parital translations for Japanese, Thai, Arabic, Hebrew, and Viossa</li> <li>+ Partial translations for Japanese, Thai, Arabic, Hebrew, and Viossa</li>
<li>[Changes]</li> <li>[Changes]</li>
<li>+ Pipes can transport pixels directly with Filter and Gate</li> <li>+ Pipes can transport pixels directly with Filter and Gate</li>
<li>~ Pipes no longer conduct heat</li> <li>~ Pipes no longer conduct heat</li>

View File

@ -4,6 +4,31 @@ See sneak peaks for upcoming updates on the Discord: https://discord.gg/ejUc6YPQ
A fancier version of this changelog can be found here: https://sandboxels.R74n.com/changelog A fancier version of this changelog can be found here: https://sandboxels.R74n.com/changelog
[Version 1.13.1 - December 18, 2025 - G&G Hotfix]
~ This is a quick group of bug fixes and improvements following yesterday's update.
+ More Shift-Select functionality:
+ Fuse can turn into an element after charged
+ Filler can turn into an element after cloning itself
+ Heat and Cool tools can specify limits
+ Paint tool can specify a specific element to paint
+ Udder can dispense a specific element
~ Distinct border for Shift-Selected element buttons
~ Chlorine Ice kills Virus like gaseous and liquid forms
~ When window is shortened vertically, canvas will shrink to fit screen
[Bug Fixes]
~ Fixed: 2- and 4-wide brushes aren't possible with scroll wheel
~ Fixed: Tea doesn't stain Paper very well
~ Fixed: Fireflies change the color of any pixel they touch
~ Fixed: Slow Cloner can't clone more than one element with Shift-Select
~ Fixed: Slow Cloner doesn't immediately grab element
~ Fixed: E-cloners can clone Walls
~ Fixed: Outline View uses white outline with custom URL backgrounds
~ Fixed: Heaters, Coolers, and Cloners can be mixed without holding Shift
~ Fixed: Language isn't autoselected for Brazilian Portuguese or Chinese
[Technical]
+ chargePixel(pixel, amount?) helper function to easily shock a pixel
+ burnPixel(pixel) helper function to easily ignite a pixel
[Version 1.13 - December 17, 2025 - Gizmos & Gadgets] [Version 1.13 - December 17, 2025 - Gizmos & Gadgets]
+ Filter + Filter
+ Only allows the first element it touches to pass + Only allows the first element it touches to pass
@ -36,7 +61,7 @@ A fancier version of this changelog can be found here: https://sandboxels.R74n.c
~ Drag tool is faster and smoother ~ Drag tool is faster and smoother
~ Pixelated and colorful button borders ~ Pixelated and colorful button borders
+ Translations for Swedish + Translations for Swedish
+ Parital translations for Japanese, Thai, Arabic, Hebrew, and Viossa + Partial translations for Japanese, Thai, Arabic, Hebrew, and Viossa
[Changes] [Changes]
+ Pipes can transport pixels directly with Filter and Gate + Pipes can transport pixels directly with Filter and Gate
~ Pipes no longer conduct heat ~ Pipes no longer conduct heat

View File

@ -49,7 +49,7 @@
<meta name="twitter:creator:id" content="1436857621827530753"> <meta name="twitter:creator:id" content="1436857621827530753">
<script> // versioning info <script> // versioning info
currentversion = "1.13"; currentversion = "1.13.1";
saveVersion = 6; saveVersion = 6;
standalone = false; standalone = false;
standaloneType = null; standaloneType = null;
@ -877,10 +877,21 @@ SEEDRISE: function(pixel) {
"HT:2|HT:2|HT:2", "HT:2|HT:2|HT:2",
"HT:2|HT:2|HT:2" "HT:2|HT:2|HT:2"
], ],
onShiftSelect: function(element) {
promptInput("Enter a maximum temperature (Celsius).", function(r) {
r = parseFloat(r);
if (isNaN(r)) return;
currentElementProp = { max:r }
}, elemTitleCase(elements[element].name || element));
},
tool: function(pixel) { tool: function(pixel) {
if (currentElementProp && pixel.temp >= currentElementProp.max) return;
if (shiftDown) {pixel.temp += elements.heat.temp+(Math.random()*elements.heat.temp*1.5)*20;} if (shiftDown) {pixel.temp += elements.heat.temp+(Math.random()*elements.heat.temp*1.5)*20;}
else {pixel.temp += elements.heat.temp+(Math.random()*elements.heat.temp*1.5);} else {pixel.temp += elements.heat.temp+(Math.random()*elements.heat.temp*1.5);}
pixelTempCheck(pixel); pixelTempCheck(pixel);
if (currentElementProp && pixel.temp > currentElementProp.max) pixel.temp = currentElementProp.max
}, },
temp: 2, temp: 2,
category: "tools", category: "tools",
@ -895,10 +906,21 @@ SEEDRISE: function(pixel) {
"CO:2|CO:2|CO:2", "CO:2|CO:2|CO:2",
"CO:2|CO:2|CO:2" "CO:2|CO:2|CO:2"
], ],
onShiftSelect: function(element) {
promptInput("Enter a minimum temperature (Celsius).", function(r) {
r = parseFloat(r);
if (isNaN(r)) return;
currentElementProp = { min:r }
}, elemTitleCase(elements[element].name || element));
},
tool: function(pixel) { tool: function(pixel) {
if (currentElementProp && pixel.temp <= currentElementProp.min) return;
if (shiftDown) {pixel.temp += elements.cool.temp+(Math.random()*elements.cool.temp*1.5)*20;} if (shiftDown) {pixel.temp += elements.cool.temp+(Math.random()*elements.cool.temp*1.5)*20;}
else {pixel.temp += elements.cool.temp+(Math.random()*elements.cool.temp*1.5);} else {pixel.temp += elements.cool.temp+(Math.random()*elements.cool.temp*1.5);}
pixelTempCheck(pixel); pixelTempCheck(pixel);
if (currentElementProp && pixel.temp < currentElementProp.min) pixel.temp = currentElementProp.min;
}, },
temp: -2, temp: -2,
category: "tools", category: "tools",
@ -1078,11 +1100,7 @@ SEEDRISE: function(pixel) {
for (var j = 0; j < (shiftDown ? 5 : 1); j++) { for (var j = 0; j < (shiftDown ? 5 : 1); j++) {
if (Math.random() < con) { // If random number is less than conductivity if (Math.random() < con) { // If random number is less than conductivity
if (!pixel.charge && !pixel.chargeCD) { if (!pixel.charge && !pixel.chargeCD) {
pixel.charge = 1; chargePixel(pixel);
pixel.chargeStart = pixelTicks;
if (elements[pixel.element].colorOn) {
pixel.color = pixelColorPick(pixel);
}
} }
} }
else if (elements[pixel.element].insulate !== true) { // Otherwise heat the pixel (Resistance simulation) else if (elements[pixel.element].insulate !== true) { // Otherwise heat the pixel (Resistance simulation)
@ -1098,7 +1116,17 @@ SEEDRISE: function(pixel) {
}, },
"paint": { "paint": {
color: ["#c27070","#c29c70","#c2c270","#70c270","#70c2c2","#7070c2","#c270c2"], color: ["#c27070","#c29c70","#c2c270","#70c270","#70c2c2","#7070c2","#c270c2"],
onShiftSelect: function(element) {
promptInput("Enter an element to only paint. Enter multiple elements separated by commas.", function(r) {
r = validateElementList(r);
if (!r) return;
currentElementProp = { filter:r }
}, elemTitleCase(elements[element].name || element));
},
tool: function(pixel) { tool: function(pixel) {
if (currentElementProp && currentElementProp.filter && !currentElementProp.filter.split(",").includes(pixel.element)) {
return;
}
if (!shiftDown) { if (!shiftDown) {
pixel.color = pixelColorPick(pixel,currentColorMap.paint) pixel.color = pixelColorPick(pixel,currentColorMap.paint)
} }
@ -2432,11 +2460,24 @@ SEEDRISE: function(pixel) {
"SH|XX|SH", "SH|XX|SH",
"XX|SH|XX" "XX|SH|XX"
], ],
// tick: function(pixel) {
// doDefaults(pixel);
// 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)) {
// var newPixel = pixelMap[x][y];
// }
// }
// },
category: "machines", category: "machines",
tempHigh: 1455.5, tempHigh: 1455.5,
stateHigh: ["molten_steel","explosion","acid_gas"], stateHigh: ["molten_steel","explosion","acid_gas"],
hardness: 0.8, hardness: 0.8,
breakInto: ["metal_scrap","acid"] breakInto: ["metal_scrap","acid"],
movable: false
}, },
"cloner": { "cloner": {
color: "#dddd00", color: "#dddd00",
@ -2447,7 +2488,8 @@ SEEDRISE: function(pixel) {
category:"machines", category:"machines",
insulate:true, insulate:true,
hardness: 1, hardness: 1,
darkText: true darkText: true,
movable: false
}, },
"sensor": { "sensor": {
color: "#bebfa3", color: "#bebfa3",
@ -2500,7 +2542,8 @@ SEEDRISE: function(pixel) {
}, },
temp: 22, temp: 22,
category:"machines", category:"machines",
insulate:true insulate:true,
movable: false
}, },
"cooler": { "cooler": {
color: "#111188", color: "#111188",
@ -2521,7 +2564,8 @@ SEEDRISE: function(pixel) {
}, },
temp: 18, temp: 18,
category:"machines", category:"machines",
insulate:true insulate:true,
movable: false
}, },
"random": { "random": {
color: ["#28BCD1","#9335E6","#E13294"], color: ["#28BCD1","#9335E6","#E13294"],
@ -2784,7 +2828,23 @@ SEEDRISE: function(pixel) {
}, },
"filler": { "filler": {
color: "#ae4cd9", color: "#ae4cd9",
behavior: behaviors.FILL, onShiftSelect: behaviors.CLONER_SHIFT_SELECT,
tick: function(pixel) {
doDefaults(pixel);
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)) {
createPixel(pixel.element, x, y);
if (pixel.clone) pixelMap[x][y].clone = pixel.clone;
}
}
if (pixel.clone !== undefined && pixelTicks - pixel.start >= 2) {
changePixel(pixel, choose(pixel.clone.split(",")));
}
},
category:"special", category:"special",
excludeRandom: true, excludeRandom: true,
reactions: { reactions: {
@ -2794,7 +2854,8 @@ SEEDRISE: function(pixel) {
"positron": { elem1:"vertical" }, "positron": { elem1:"vertical" },
"plasma": { elem1:"armageddon", tempMin:500, charged:true } "plasma": { elem1:"armageddon", tempMin:500, charged:true }
}, },
density: 1834 density: 1834,
movable: false
}, },
"lattice": { "lattice": {
color: "#cb4cd9", color: "#cb4cd9",
@ -3480,7 +3541,7 @@ SEEDRISE: function(pixel) {
pixel.emit = false; pixel.emit = false;
} }
behaviors.FLY(pixel,function(firefly,newfly){ behaviors.FLY(pixel,function(firefly,newfly){
if (newfly) { if (newfly && newfly.element === "firefly") {
newfly.fff = firefly.fff; newfly.fff = firefly.fff;
newfly.color = newfly.ffc||pixelColorPick(newfly,"#684841"); newfly.color = newfly.ffc||pixelColorPick(newfly,"#684841");
newfly.glow = false; newfly.glow = false;
@ -4909,10 +4970,17 @@ SEEDRISE: function(pixel) {
}, },
"fuse": { "fuse": {
color: "#825d38", color: "#825d38",
onShiftSelect: function(element) {
promptInput("Enter an element to turn into once charged.", function(r) {
r = validateElementList(r);
if (!r) return;
currentElementProp = { clone:r }
}, elemTitleCase(elements[element].name || element));
},
tick: function(pixel) { tick: function(pixel) {
doDefaults(pixel); doDefaults(pixel);
if (pixel.charge < 1) { if (pixel.charge < 1) {
changePixel(pixel,"flash"); changePixel(pixel,pixel.clone ? choose(pixel.clone.split(",")) : "flash");
pixel.charge = 0; pixel.charge = 0;
} }
}, },
@ -4981,6 +5049,7 @@ SEEDRISE: function(pixel) {
}, },
"udder": { "udder": {
color: "#ecb3f5", color: "#ecb3f5",
onShiftSelect: behaviors.CLONER_SHIFT_SELECT,
tick: function(pixel) { tick: function(pixel) {
if (!isEmpty(pixel.x+1,pixel.y,true)) { if (!isEmpty(pixel.x+1,pixel.y,true)) {
let pixel2 = pixelMap[pixel.x+1][pixel.y]; let pixel2 = pixelMap[pixel.x+1][pixel.y];
@ -5747,8 +5816,7 @@ SEEDRISE: function(pixel) {
behavior: behaviors.LIQUID, behavior: behaviors.LIQUID,
tick: function(pixel) { tick: function(pixel) {
if (pixel.temp > 500 && !pixel.burning) { if (pixel.temp > 500 && !pixel.burning) {
pixel.burning = true; burnPixel(pixel);
pixel.burnStart = pixelTicks;
} }
}, },
reactions: { reactions: {
@ -7083,7 +7151,7 @@ SEEDRISE: function(pixel) {
} }
}, },
onClicked: behaviors.CLONE_ON_CLICK, onClicked: behaviors.CLONE_ON_CLICK,
ignore: ["cloner","slow_cloner","clone_powder","floating_cloner","wire","ewall","sensor","battery","fuse"], ignore: ["cloner","slow_cloner","clone_powder","floating_cloner","wire","wall","ewall","sensor","battery","fuse"],
ignoreConduct:["fuse"], ignoreConduct:["fuse"],
category:"machines", category:"machines",
insulate:true, insulate:true,
@ -7094,17 +7162,17 @@ SEEDRISE: function(pixel) {
}, },
"slow_cloner": { "slow_cloner": {
color: "#888800", color: "#888800",
behavior: [ tick: function(pixel) {
"XX|CF%10|XX", doDefaults(pixel);
"CF%10|XX|CF%10", behaviors.CLONER(pixel, 0.1);
"XX|CF%10|XX" },
],
onClicked: behaviors.CLONE_ON_CLICK, onClicked: behaviors.CLONE_ON_CLICK,
onShiftSelect: behaviors.CLONER_SHIFT_SELECT, onShiftSelect: behaviors.CLONER_SHIFT_SELECT,
ignore: ["cloner","ecloner","clone_powder","floating_cloner","wall","ewall"], ignore: ["cloner","ecloner","clone_powder","floating_cloner","wall","ewall"],
category:"machines", category:"machines",
insulate:true, insulate:true,
hardness: 1 hardness: 1,
movable: false
}, },
"clone_powder": { "clone_powder": {
color: "#f0f000", color: "#f0f000",
@ -7172,6 +7240,7 @@ SEEDRISE: function(pixel) {
reactions: { reactions: {
"chlorine": { elem1:null }, "chlorine": { elem1:null },
"liquid_chlorine": { elem1:null }, "liquid_chlorine": { elem1:null },
"chlorine_ice": { elem1:null },
"light": { elem1:null, chance:0.1 }, "light": { elem1:null, chance:0.1 },
"liquid_light": { elem1:null, chance:0.1 }, "liquid_light": { elem1:null, chance:0.1 },
"electric": { elem2:"malware" } "electric": { elem2:"malware" }
@ -10249,6 +10318,7 @@ SEEDRISE: function(pixel) {
state: "liquid", state: "liquid",
density: 1001, density: 1001,
stain: -0.1, stain: -0.1,
ignore: ["paper"],
hidden: true, hidden: true,
isFood: true isFood: true
}, },
@ -11483,8 +11553,7 @@ SEEDRISE: function(pixel) {
behavior: behaviors.LIQUID, behavior: behaviors.LIQUID,
tick: function(pixel) { tick: function(pixel) {
if (!pixel.burning && pixel.temp >= 232) { if (!pixel.burning && pixel.temp >= 232) {
pixel.burning = true; burnPixel(pixel);
pixel.burnStart = pixelTicks;
} }
}, },
reactions: { reactions: {
@ -12645,8 +12714,7 @@ SEEDRISE: function(pixel) {
tool: function(pixel) { tool: function(pixel) {
pixel.temp += 10000; pixel.temp += 10000;
if (!pixel.burning && elements[pixel.element].burn) { if (!pixel.burning && elements[pixel.element].burn) {
pixel.burning = true; burnPixel(pixel)
pixel.burnStart = pixelTicks;
} }
pixelTempCheck(pixel); pixelTempCheck(pixel);
}, },
@ -12821,8 +12889,7 @@ SEEDRISE: function(pixel) {
color: "#c44f45", color: "#c44f45",
tick: function(pixel) { tick: function(pixel) {
if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) { if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) {
pixel.burning = true; burnPixel(pixel);
pixel.burnStart = pixelTicks;
} }
if (pixel.burning) { if (pixel.burning) {
if (!tryMove(pixel, pixel.x, pixel.y-1)) { if (!tryMove(pixel, pixel.x, pixel.y-1)) {
@ -13523,10 +13590,7 @@ SEEDRISE: function(pixel) {
var x = coordsToShock[i][0]; var x = coordsToShock[i][0];
var y = coordsToShock[i][1]; var y = coordsToShock[i][1];
if (!isEmpty(x,y,true)) { if (!isEmpty(x,y,true)) {
var newpixel = pixelMap[x][y]; chargePixel(pixelMap[x][y]);
if (elements[newpixel.element].conduct) {
newpixel.charge = 1;
}
} }
} }
} }
@ -14077,7 +14141,11 @@ else if (!standalone && settings.lang !== null) {
try { try {
// try auto-setting language // try auto-setting language
let code = navigator.languages ? navigator.languages[0] : navigator.language; let code = navigator.languages ? navigator.languages[0] : navigator.language;
if (code && !code.match(/^en-?/)) { if (code.match(/^en-?/)) { /*do nothing*/ }
else if (code === "pt-BR") langCode = "pt_br";
else if (code === "zh-CN") langCode = "zh_cn";
else if (code === "zh-HK" || code === "zh-TW") langCode = "zh_hant";
else if (code) {
langCode = code.toLowerCase().split("-")[0]; langCode = code.toLowerCase().split("-")[0];
} }
} }
@ -14364,8 +14432,7 @@ function langKey(key,fallback,template) {
pixel.start = pixelTicks; pixel.start = pixelTicks;
var elementInfo = elements[element]; var elementInfo = elements[element];
if (elementInfo.burning == true) { if (elementInfo.burning == true) {
pixel.burning = true; burnPixel(pixel);
pixel.burnStart = pixelTicks;
} }
else if (pixel.burning && !elementInfo.burn) { else if (pixel.burning && !elementInfo.burn) {
delete pixel.burning; delete pixel.burning;
@ -14564,6 +14631,27 @@ function langKey(key,fallback,template) {
} }
return null; return null;
} }
function chargePixel(pixel,amount=1) {
var con = elements[pixel.element].conduct;
if (con !== undefined) {
if (Math.random() < con) { // If random number is less than conductivity
if (elements[pixel.element].ignore && elements[pixel.element].ignore.indexOf(pixel.element) !== -1) {
return;
}
if (!pixel.charge && !pixel.chargeCD) {
pixel.charge = amount;
if (elements[pixel.element].colorOn) {
pixel.color = pixelColorPick(pixel);
}
}
}
}
}
function burnPixel(pixel) {
if (!elements[pixel.element].burn || pixel.burning) return;
pixel.burning = true;
pixel.burnStart = pixelTicks;
}
function pixelDistance(x1, y1, x2, y2) { function pixelDistance(x1, y1, x2, y2) {
let a = x1 - x2; let a = x1 - x2;
let b = y1 - y2; let b = y1 - y2;
@ -14932,20 +15020,10 @@ behaviorRules = {
"SH": function() { "SH": function() {
if (!isEmpty(btemp.newCoords.x, btemp.newCoords.y, true)) { if (!isEmpty(btemp.newCoords.x, btemp.newCoords.y, true)) {
var newPixel = pixelMap[btemp.newCoords.x][btemp.newCoords.y]; var newPixel = pixelMap[btemp.newCoords.x][btemp.newCoords.y];
var con = elements[newPixel.element].conduct; chargePixel(newPixel, parseFloat(btemp.arg) || 1);
if (con !== undefined) { if (btemp.arg !== null && newPixel.element !== btemp.arg) {
if (Math.random() < con) { // If random number is less than conductivity
if (btemp.info.ignore && btemp.info.ignore.indexOf(newPixel.element) !== -1) {
return; return;
} }
if (!newPixel.charge && !newPixel.chargeCD && (btemp.arg === null || newPixel.element == btemp.arg)) {
newPixel.charge = (parseFloat(btemp.arg) || 1);
if (elements[newPixel.element].colorOn) {
newPixel.color = pixelColorPick(newPixel);
}
}
}
}
} }
}, },
"ST": function() { "ST": function() {
@ -15392,8 +15470,7 @@ behaviorRules = {
var newPixel = pixelMap[x][y]; var newPixel = pixelMap[x][y];
if (elements[newPixel.element].burn && !newPixel.burning) { if (elements[newPixel.element].burn && !newPixel.burning) {
if (Math.floor(Math.random()*100) < elements[newPixel.element].burn) { if (Math.floor(Math.random()*100) < elements[newPixel.element].burn) {
newPixel.burning = true; burnPixel(newPixel);
newPixel.burnStart = pixelTicks;
} }
} }
if (elements[newPixel.element].extinguish && elements[pixel.element].burning !== true) { if (elements[newPixel.element].extinguish && elements[pixel.element].burning !== true) {
@ -16275,8 +16352,7 @@ behaviorRules = {
} }
} }
if (damage > 0.75 && info.burn) { if (damage > 0.75 && info.burn) {
pixel.burning = true; burnPixel(pixel);
pixel.burnStart = pixelTicks;
} }
pixel.temp += damage*radius*power; pixel.temp += damage*radius*power;
pixelTempCheck(pixel); pixelTempCheck(pixel);
@ -17178,13 +17254,13 @@ behaviorRules = {
var deltaY = e.deltaY; var deltaY = e.deltaY;
if (settings.invertscroll) { if (settings.invertscroll) {
if (deltaY > 0) { deltaY = 1; } if (deltaY > 0) { deltaY = 1; }
else { deltaY = -1.5; } else { deltaY = -1; }
} }
else { else {
if (deltaY < 0) { deltaY = 1; } if (deltaY < 0) { deltaY = 1; }
else { deltaY = -1.5; } else { deltaY = -1; }
} }
mouseSize += Math.round(deltaY*1.5); mouseSize += Math.round(deltaY);
checkMouseSize(true); checkMouseSize(true);
} }
function chooseElementPrompt() { function chooseElementPrompt() {
@ -17199,6 +17275,12 @@ behaviorRules = {
selectCategory(elements[es].category); selectCategory(elements[es].category);
if (shiftDown && elements[currentElement].onShiftSelect) { if (shiftDown && elements[currentElement].onShiftSelect) {
elements[currentElement].onShiftSelect(currentElement); elements[currentElement].onShiftSelect(currentElement);
if (promptState) promptState.after = function() {
if (currentElementProp) {
let btn = document.getElementById("elementButton-"+currentElement);
if (btn) btn.setAttribute("modified", "true");
}
}
} }
} }
else { else {
@ -17312,7 +17394,10 @@ behaviorRules = {
elements[currentElement].onUnselect(); elements[currentElement].onUnselect();
} }
var e1 = document.getElementById("elementButton-"+currentElement); var e1 = document.getElementById("elementButton-"+currentElement);
if (e1 !== null) { e1.setAttribute("current","false"); } if (e1 !== null) {
e1.setAttribute("current","false");
e1.setAttribute("modified","false");
}
prevElement = currentElement; prevElement = currentElement;
currentElement = element; currentElement = element;
currentElementProp = null; currentElementProp = null;
@ -17420,6 +17505,12 @@ behaviorRules = {
selectElement(this.getAttribute("element")); selectElement(this.getAttribute("element"));
if (shiftDown && elements[currentElement].onShiftSelect) { if (shiftDown && elements[currentElement].onShiftSelect) {
elements[currentElement].onShiftSelect(currentElement); elements[currentElement].onShiftSelect(currentElement);
if (promptState) promptState.after = function() {
if (currentElementProp) {
let btn = document.getElementById("elementButton-"+currentElement);
if (btn) btn.setAttribute("modified", "true");
}
}
} }
} }
} }
@ -19191,6 +19282,7 @@ for (var k = 0; k < b0.split(" AND ").length; k++) {
if (!url) return; if (!url) return;
if (!url.startsWith("http")) url = "https://"+url; if (!url.startsWith("http")) url = "https://"+url;
setCanvasBackground(url); setCanvasBackground(url);
settings.bg = "#616161";
}); });
return; return;
}; };
@ -19359,9 +19451,13 @@ for (var k = 0; k < b0.split(" AND ").length; k++) {
if (!promptState) return; if (!promptState) return;
if (!promptState.wasPaused && paused) togglePause(); if (!promptState.wasPaused && paused) togglePause();
let handler = promptState.handler; let handler = promptState.handler;
let after = promptState.after;
closeMenu(); closeMenu();
promptState = null; promptState = null;
if (handler) handler(result); if (handler) handler(result);
if (after) {
after();
}
if (promptState && showingMenu !== "prompt") { if (promptState && showingMenu !== "prompt") {
showPromptScreen(); showPromptScreen();
} }

View File

@ -136,7 +136,7 @@
<tr><td>classic_textures.js</td><td>Use textures from early versions of the game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>classic_textures.js</td><td>Use textures from early versions of the game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>color_everything.js</td><td>Allows every element to have a custom color</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>color_everything.js</td><td>Allows every element to have a custom color</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>death_count.js</td><td>Messages counting when Humans die</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>death_count.js</td><td>Messages counting when Humans die</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>devsnacks.js</td><td>Extra food ingredients and recipes; Only Tea stuff currently</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>devsnacks.js</td><td>Extra food ingredients and recipes</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>fools.js</td><td>Re-adds FOOLS Mode</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>fools.js</td><td>Re-adds FOOLS Mode</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>

View File

@ -84,6 +84,10 @@ a:hover { text-decoration: underline; }
#game { #game {
image-rendering: pixelated; image-rendering: pixelated;
max-width: 100vw; max-width: 100vw;
max-height: 100vh;
transform: translateX(-50%);
left: 50%;
position: relative;
} }
#bottomInfoBox { /* place under the game canvas */ #bottomInfoBox { /* place under the game canvas */
margin: 1.5em 50px 0px 50px; margin: 1.5em 50px 0px 50px;
@ -458,6 +462,9 @@ input[type="button"]:active, input[type="button"]:active:hover {
border-color:#5ee05e!important; border-color:#5ee05e!important;
box-shadow: 0px 1px 15px rgba(0, 255, 0, .75); box-shadow: 0px 1px 15px rgba(0, 255, 0, .75);
} }
#controls .elementButton[modified="true"] {
border-color:#0d62ff!important;
}
#controls button.bright[current="true"] { #controls button.bright[current="true"] {
color: rgba(0, 0, 0, 1); color: rgba(0, 0, 0, 1);
} }
@ -791,7 +798,8 @@ button, input { /*Disable double tap zoom on mobile devices*/
} }
#canvasDiv { #canvasDiv {
position:relative; position:relative;
overflow-x:hidden overflow-x:hidden;
background-color: var(--theme-opac75);
} }
#colorSelector { #colorSelector {
position:absolute; position:absolute;
@ -1069,3 +1077,6 @@ img {
#controls .elementButton[current="true"]::after { #controls .elementButton[current="true"]::after {
background: #5ee05e; background: #5ee05e;
} }
#controls .elementButton[modified="true"]::after {
background: #0d62ff;
}