GS and Holy bombs, melt ray

This commit is contained in:
An Orbit 2024-01-30 11:26:26 -05:00 committed by GitHub
parent 6ab1c73247
commit 9500529547
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 136 additions and 1 deletions

View File

@ -4177,7 +4177,6 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
return
})
};
doDefaults(pixel);
},
temp:6000,
@ -4195,6 +4194,39 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
ignoreAir: true
};
elements.holy_bomb = {
color: ["#dbb260", "#94591e"],
tick: function(pixel) {
if(!isEmpty(pixel.x,pixel.y-1,true)) { //[0][1] EX (ignore bounds)
var newPixel = pixelMap[pixel.x][pixel.y-1];
var newElement = newPixel.element;
var newInfo = elements[newElement];
if(newInfo.state !== "gas" && newElement !== pixel.element) {
explodeAtPlus(pixel.x,pixel.y,13,"holy_fire","plasma",null,firebombFire);
};
};
if(!isEmpty(pixel.x,pixel.y+1,true)) { //[2][1] EX (don't ignore bounds, non-bound case)
var newPixel = pixelMap[pixel.x][pixel.y+1];
var newElement = newPixel.element;
var newInfo = elements[newElement];
if(newInfo.state !== "gas" && newElement !== pixel.element) {
explodeAtPlus(pixel.x,pixel.y,13,"holy_fire","plasma",null,firebombFire);
};
};
if(outOfBounds(pixel.x,pixel.y+1)) { //[2][1] EX (don't ignore bounds, bound case)
explodeAtPlus(pixel.x,pixel.y,13,"holy_fire","plasma",null,firebombFire);
};
if(!tryMove(pixel,pixel.x,pixel.y+1)) { //behaviors.POWDER
Math.random() < 0.5 ? tryMove(pixel,pixel.x-1,pixel.y+1) : tryMove(pixel,pixel.x+1,pixel.y+1);
};
},
category: "weapons",
state: "solid",
density: 4000,
excludeRandom: true,
desc: "A bomb that burns the world to pure ash. <br/>To enable automatic bomb generation, set the generateBombs query parameter.",
};
elements.bless.ignore ??= [];
elements.bless.ignore.push("holy_fire");
@ -4288,6 +4320,39 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
ignoreAir: true
};
elements.god_slayer_bomb = {
color: ["#a43dcc", "#49b6d1"],
tick: function(pixel) {
if(!isEmpty(pixel.x,pixel.y-1,true)) { //[0][1] EX (ignore bounds)
var newPixel = pixelMap[pixel.x][pixel.y-1];
var newElement = newPixel.element;
var newInfo = elements[newElement];
if(newInfo.state !== "gas" && newElement !== pixel.element) {
explodeAtPlus(pixel.x,pixel.y,40,"god_slayer_fire","plasma");
};
};
if(!isEmpty(pixel.x,pixel.y+1,true)) { //[2][1] EX (don't ignore bounds, non-bound case)
var newPixel = pixelMap[pixel.x][pixel.y+1];
var newElement = newPixel.element;
var newInfo = elements[newElement];
if(newInfo.state !== "gas" && newElement !== pixel.element) {
explodeAtPlus(pixel.x,pixel.y,40,"god_slayer_fire","plasma");
};
};
if(outOfBounds(pixel.x,pixel.y+1)) { //[2][1] EX (don't ignore bounds, bound case)
explodeAtPlus(pixel.x,pixel.y,40,"god_slayer_fire","plasma");
};
if(!tryMove(pixel,pixel.x,pixel.y+1)) { //behaviors.POWDER
Math.random() < 0.5 ? tryMove(pixel,pixel.x-1,pixel.y+1) : tryMove(pixel,pixel.x+1,pixel.y+1);
};
},
category: "weapons",
state: "solid",
density: 4500,
excludeRandom: true,
desc: "A bomb that makes gods tremble. <br/>To enable automatic bomb generation, set the generateBombs query parameter.",
};
elements.cloner.burnTime = Infinity;
elements.cloner.burnInto = "cloner";
@ -28481,6 +28546,7 @@ Make sure to save your command in a file if you want to add this preset again.`
})
});
lightlikes = ["light","flash","laser","radiation","insulate_flash"];
firelikes = ["fire","plasma","smoke","stellar_plasma","liquid_plasma","liquid_stellar_plasma"];
grbBreakIntos = Object.keys(elements).filter(function(elemName) {
var to = typeof(elements[elemName]);
if(to == "undefined") {
@ -28661,6 +28727,75 @@ Make sure to save your command in a file if you want to add this preset again.`
noMix: true
};
elements.melt_ray = {
color: ["#ffbf7f","#ffffbf"],
tick: function(pixel) {
var x = pixel.x;
for (var y = pixel.y; y < height; y++) {
if (outOfBounds(x, y)) {
break;
}
if (isEmpty(x, y)) {
if (Math.random() > 0.02) { continue }
createPixel("insulate_flash", x, y);
pixelMap[x][y].color = "#e1f8fc";
}
else {
var otherPixel = pixelMap[x][y];
var otherInfo = elements[otherPixel.element];
//Gas: Heat, always penetrate
if (otherInfo.isGas) {
if(Math.random() < 0.05 && otherInfo.stateLow) {
meltPixel(otherPixel)
};
if(elements[otherPixel.element].isSun) {
otherPixel.temp += 0.5;
} else {
otherPixel.temp += 50;
};
continue;
};
//Self: Break
if (otherInfo.id === elements.melt_ray.id) { break }
//Non-gas, Melt chance, heat more, half penetrate
if(Math.random() < 0.05 && !otherInfo.isGas) {
meltPixel(otherPixel)
};
pixelMap[x][y].temp += 200;
if(Math.random() < 0.05) {
if(!isEmpty(x,y-1,false)) {
if(pixelMap[x]?.[y-1]?.element && lightlikes.includes(pixelMap[x][y-1].element)) {
deletePixel(x,y-1);
};
};
var newPlasma = tryCreatePixelReturn("liquid_plasma",x,y-1);
if(newPlasma) { newPlasma.temp += 500 };
};
//Penetrate snow and ice
if(firelikes && firelikes.includes(otherPixel.element)) {
continue;
};
if(Math.random() < 0.7) { //thanks, I hate random continue
continue;
};
break;
}
}
deletePixel(pixel.x, pixel.y);
},
temp: 4000,
category: "energy",
state: "gas",
excludeRandom: true,
noMix: true
};
elements.smash_ray = {
color: ["#ff9999", "#8c8279"],
tick: function(pixel) {