runAfterLoad(function(){ doVelocity = function(pixel) { if ((pixel.vx||pixel.vy) && elements[pixel.element].movable) { if (pixel.vx) { // move the pixel vx times for (var i = 0; i < Math.abs(pixel.vx); i++) { var x = pixel.x+Math.sign(pixel.vx); var y = pixel.y; if (!tryMove(pixel,x,y)) { if (!isEmpty(x,y,true)) { var newPixel = pixelMap[x][y]; if (elements[newPixel.element].movable) { newPixel.vx = (newPixel.vx||0) + pixel.vx - Math.sign(pixel.vx); if (elements[pixel.element].breakInto && Math.random() 0.9) { if (Array.isArray(fire)) { var newfire = fire[Math.floor(Math.random() * fire.length)]; } else { var newfire = fire; } changePixel(pixel,newfire); continue; } else if (damage > 0.25) { if (info.breakInto !== undefined) { breakPixel(pixel); continue; } else { if (Array.isArray(fire)) { var newfire = fire[Math.floor(Math.random() * fire.length)]; } else { var newfire = fire; } if (elements[pixel.element].onBreak !== undefined) { elements[pixel.element].onBreak(pixel); } changePixel(pixel,newfire); continue; } } if (damage > 0.75 && info.burn) { pixel.burning = true; pixel.burnStart = pixelTicks; } pixel.temp += damage*radius*power; pixelTempCheck(pixel); // set the pixel.vx and pixel.vy depending on the angle and power if (!elements[pixel.element].excludeRandom) { var angle = Math.atan2(pixel.y-y,pixel.x-x); pixel.vx = Math.round((pixel.vx|0) + Math.cos(angle) * (radius * power/10)); pixel.vy = Math.round((pixel.vy|0) + Math.sin(angle) * (radius * power/10)); } } } }