function planetCrackerHeat(pixel,x,y,radius,fire,smoke,power,damage) { //console.log(`Radius: ${radius}\nPower: ${power}\nPixel: (${pixel.x},${pixel.y})\nDamage: ${damage}`); //console.log(`Expected temperature increase for pixel at (${pixel.x},${pixel.y}): ${800 * ((1 + (7 * damage)) ** 2) * ((power ** 2) * 1.5)}`); var reversedCloseness = ((radius / 6) ** 0.5) - 1; //mathematically inaccurate but properly correlated pixel.temp += 500 * ((reversedCloseness * 2) + 1); if(pixel.vx) { pixel.vx *= 2; }; if(pixel.vy) { pixel.vy *= 2; }; }; function planetCrackerFinale(doColorChange=true) { var bottomFortyPercent = Math.round(height * 0.6); var bottomTwentyPercent = Math.round(height * 0.8); var bottomTenPercent = Math.round(height * 0.9); for(x = 1; x < width; x++) { for(y = bottomFortyPercent; y < height; y++) { var chance = y > bottomTwentyPercent ? 0.03 : 0.01 var radius = y > bottomTwentyPercent ? 8 : 6 if(enabledMods.includes("velocity.js") && !isEmpty(x,y,true)) { pixelMap[x][y].vy ??= 0; pixelMap[x][y].vy -= 20; }; if(y > bottomTenPercent && !isEmpty(x,y,true)) { pixelMap[x][y].temp += 2000; }; if(Math.random() < chance) { explodeAt(x,y,radius,"plasma"); }; }; }; if(doColorChange) { if(enabledMods.includes("mods/gradient_background_support.js")) { settings.bg = ["#000000","#000000","#000000","#000000","#29180e","#663814","#9e6f19","#f7af2a"]; settings.bgAngle = 90; } else { settings.bg = "#642402"; }; }; }; elements.planet_cracker = { color: "#ffc8ba", behavior: behaviors.WALL, properties: { active: true, counter: 1, }, tick: function(pixel) { if(!pixel?.active) { return; }; if(outOfBounds(pixel.x,pixel.y+pixel.counter)) { planetCrackerFinale(); pixel.active = false; changePixel(pixel,"metal_scrap"); }; if(pixel.active) { var pixelDistanceFromBottom = height - pixel.y; var counterDistanceFromBottom = height - (pixel.y + pixel.counter); var closenessToBottom = 1 - (counterDistanceFromBottom / pixelDistanceFromBottom); //console.log(closenessToBottom); var finalRadius = Math.round(((1 + closenessToBottom) ** 2) * 6); if(typeof(explodeAtPlus) === "function") { explodeAtPlus(pixel.x,pixel.y+pixel.counter,finalRadius,"plasma","fire",null,planetCrackerHeat); } else { explodeAt(pixel.x,pixel.y+pixel.counter,finalRadius,"plasma"); }; pixel.counter++; }; }, state: "solid", density: 10000, category: "weapons", hardness: 1, };