parent
f0c0837b4c
commit
612e423984
|
|
@ -5504,6 +5504,8 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hiding = false
|
||||||
|
|
||||||
runAfterAutogen(function() {
|
runAfterAutogen(function() {
|
||||||
//rAA because velocity.js already puts its redef in a rAL and rAA comes after that
|
//rAA because velocity.js already puts its redef in a rAL and rAA comes after that
|
||||||
drawPixels = function(forceTick=false) {
|
drawPixels = function(forceTick=false) {
|
||||||
|
|
@ -5567,6 +5569,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
};
|
};
|
||||||
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
||||||
}
|
}
|
||||||
|
if(!hiding) {
|
||||||
var pixelDrawList = pixelsFirst.concat(pixelsLast);
|
var pixelDrawList = pixelsFirst.concat(pixelsLast);
|
||||||
for (var i = 0; i < pixelDrawList.length; i++) {
|
for (var i = 0; i < pixelDrawList.length; i++) {
|
||||||
var pixel = pixelDrawList[i];
|
var pixel = pixelDrawList[i];
|
||||||
|
|
@ -5575,7 +5578,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
if((typeof(pixel.color) !== "string") || (pixel.color.indexOf("NaN") >= 0)) {
|
if((typeof(pixel.color) !== "string") || (pixel.color.indexOf("NaN") >= 0)) {
|
||||||
pixel.color = pixelColorPick(pixel)
|
pixel.color = pixelColorPick(pixel)
|
||||||
};
|
};
|
||||||
if(pixel.color.length <= 7) { //hex triplets as colors seem to break some mods and can't be allowed
|
if(pixel.color.length <= 7) { //hex triplets as rgb colors seem to break some mods and can't be allowed
|
||||||
pixel.color = convertColorFormats(pixel.color,"rgb")
|
pixel.color = convertColorFormats(pixel.color,"rgb")
|
||||||
};
|
};
|
||||||
var colorFunction = viewColorFunctions[view] ?? normalColorFunction;
|
var colorFunction = viewColorFunctions[view] ?? normalColorFunction;
|
||||||
|
|
@ -5697,6 +5700,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
if (ctx.globalAlpha < 1) {
|
if (ctx.globalAlpha < 1) {
|
||||||
ctx.globalAlpha = 1;
|
ctx.globalAlpha = 1;
|
||||||
|
|
@ -11214,23 +11218,41 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
pixel.vy *= 2;
|
pixel.vy *= 2;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
function planetCrackerFinale(doColorChange=true) {
|
function planetCrackerFinale(doColorChange=true,spawnElements=null) {
|
||||||
var bottomFortyPercent = Math.round(height * 0.6);
|
var bottomFortyPercent = Math.round(height * 0.6);
|
||||||
var bottomTwentyPercent = Math.round(height * 0.8);
|
var bottomTwentyPercent = Math.round(height * 0.8);
|
||||||
var bottomTenPercent = Math.round(height * 0.9);
|
var bottomTenPercent = Math.round(height * 0.9);
|
||||||
|
if(typeof(spawnElements) == "string") {
|
||||||
|
if(spawnElements.indexOf(",") >= 0) {
|
||||||
|
spawnElements = spawnElements.split(",")
|
||||||
|
} else { spawnElements = [spawnElements] };
|
||||||
|
};
|
||||||
|
if(Array.isArray(spawnElements)) {
|
||||||
|
spawnElements = spawnElements.filter(n => elementExists(n));
|
||||||
|
if(spawnElements.length == 0) {
|
||||||
|
spawnElements = null
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var doSpawning = (spawnElements !== null);
|
||||||
for(x = 1; x < width; x++) {
|
for(x = 1; x < width; x++) {
|
||||||
for(y = bottomFortyPercent; y < height; y++) {
|
for(y = bottomFortyPercent; y < height; y++) {
|
||||||
var chance = y > bottomTwentyPercent ? 0.03 : 0.01
|
var chance = y > bottomTwentyPercent ? 0.03 : 0.01
|
||||||
var radius = y > bottomTwentyPercent ? 8 : 6
|
var radius = y > bottomTwentyPercent ? 8 : 6
|
||||||
if(!isEmpty(x,y,true)) {
|
var newPixel = pixelMap[x]?.[y];
|
||||||
pixelMap[x][y].vy ??= 0;
|
if(doSpawning && y > bottomTenPercent && isEmpty(x,y,false) && (Math.random() < 0.6)) {
|
||||||
pixelMap[x][y].vy -= 20;
|
var _np = tryCreatePixelReturn(randomChoice(spawnElements),x,y);
|
||||||
|
if(_np) { newPixel = _np }
|
||||||
};
|
};
|
||||||
if(y > bottomTenPercent && !isEmpty(x,y,true)) {
|
if(newPixel) {
|
||||||
pixelMap[x][y].temp += 2000;
|
newPixel.vy ??= 0;
|
||||||
|
newPixel.vy -= 20;
|
||||||
|
};
|
||||||
|
if(newPixel && y > bottomTenPercent) {
|
||||||
|
newPixel.temp += 2000;
|
||||||
|
pixelTempCheck(newPixel)
|
||||||
};
|
};
|
||||||
if(Math.random() < chance) {
|
if(Math.random() < chance) {
|
||||||
explodeAt(x,y,radius,"plasma");
|
explodeAt(x,y,radius,spawnElements ? ((",plasma".repeat(spawnElements.length * 14).replace(",","")) + "," + spawnElements.join(",")) : "plasma");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -11251,21 +11273,46 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
if(outOfBounds(pixel.x,pixel.y+pixel.counter)) {
|
if(outOfBounds(pixel.x,pixel.y+pixel.counter)) {
|
||||||
planetCrackerFinale();
|
planetCrackerFinale(true,pixel._bottomStateHighCache ?? null);
|
||||||
pixel.active = false;
|
pixel.active = false;
|
||||||
changePixel(pixel,"metal_scrap");
|
changePixel(pixel,"metal_scrap");
|
||||||
};
|
};
|
||||||
if(pixel.active) {
|
if(pixel.active) {
|
||||||
|
pixel._bottomStateHighCache ??= [];
|
||||||
|
pixel._bottomStateHighCache = currentPixels.filter(p => p.y == height - 1).map(p => p.element);
|
||||||
|
var bshcUniques = Array.from(new Set(pixel._bottomStateHighCache));
|
||||||
|
pixel._bottomStateHighCache = bshcUniques.filter(elemNameToFilterBy => (pixel._bottomStateHighCache.filter(elemName => elemName == elemNameToFilterBy).length >= (pixel._bottomStateHighCache.length / 10)));
|
||||||
|
pixel._bottomStateHighCache = pixel._bottomStateHighCache.map(elemName => getStateHigh(elemName) ?? elemName);
|
||||||
var pixelDistanceFromBottom = height - pixel.y;
|
var pixelDistanceFromBottom = height - pixel.y;
|
||||||
var counterDistanceFromBottom = height - (pixel.y + pixel.counter);
|
var counterDistanceFromBottom = height - (pixel.y + pixel.counter);
|
||||||
|
var yRisingFromBottomToHalfway = Math.round((height - 1) - (pixel.counter / 2));
|
||||||
|
|
||||||
var closenessToBottom = 1 - (counterDistanceFromBottom / pixelDistanceFromBottom);
|
var closenessToBottom = 1 - (counterDistanceFromBottom / pixelDistanceFromBottom);
|
||||||
//console.log(closenessToBottom);
|
|
||||||
var finalRadius = Math.round(((1 + closenessToBottom) ** 2) * 6);
|
var finalRadius = Math.round(((1 + closenessToBottom) ** 2) * 6);
|
||||||
if(typeof(explodeAtPlus) === "function") {
|
|
||||||
explodeAtPlus(pixel.x,pixel.y+pixel.counter,finalRadius,"plasma","fire",null,planetCrackerHeat);
|
var earthquakeChance = ((closenessToBottom >= 0.5) && (0.1 + (0.05 * (1 + (Math.max(closenessToBottom - 0.5,0) * 25)))))
|
||||||
} else {
|
var earthquakeMaxTryCount = 2 + (Math.random() < (closenessToBottom - 0.5)) + (Math.random() < (closenessToBottom - 0.75)) + (Math.random() < earthquakeChance) + (Math.random() < (earthquakeChance ** 2));
|
||||||
explodeAt(pixel.x,pixel.y+pixel.counter,finalRadius,"plasma");
|
for(var i = 0; i < earthquakeMaxTryCount; i++) {
|
||||||
|
if((closenessToBottom >= 0.5) && (Math.random() < earthquakeChance)) { //random earthquake
|
||||||
|
var rX = (Math.floor(Math.random() * (width - 1)) + 1);
|
||||||
|
var rY = Math.round(height / 2) + Math.floor(Math.random() * height / 2);
|
||||||
|
var eq = createOrChangePixelAndReturn("earthquake",rX,rY);
|
||||||
|
if(eq) {
|
||||||
|
eq.stage = 1;
|
||||||
|
eq.mag = Math.floor(Math.random() * ((5 * (1 + (Math.max(closenessToBottom - 0.5,0) * 2.5))) + 1)) + 15;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
for(var x = 1; x < width; x++) {
|
||||||
|
var y = yRisingFromBottomToHalfway;
|
||||||
|
if(isEmpty(x,y,true)) { continue };
|
||||||
|
var newPixel = pixelMap[x][y];
|
||||||
|
newPixel.temp += 400 + ((1 - closenessToBottom) * 100);
|
||||||
|
pixelTempCheck(newPixel)
|
||||||
|
};
|
||||||
|
|
||||||
|
explodeAtPlus(pixel.x,pixel.y+pixel.counter,finalRadius,"plasma","fire",null,planetCrackerHeat);
|
||||||
pixel.counter++;
|
pixel.counter++;
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue