liquid H and GS fires, haseulite buff

This commit is contained in:
An Orbit 2024-02-02 11:06:21 -05:00 committed by GitHub
parent 2f3654c449
commit 0b82f92b4a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 154 additions and 6 deletions

View File

@ -4188,7 +4188,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
burnTime: 500,
burnTempChange: 8,
fireElement: ["bless","plasma"],
ignore: ["ash","light","bless","plasma","wall"],
ignore: ["ash","light","bless","plasma","fire","smoke","liquid_holy_fire"].concat(searchElements("haseulite")).concat("haseulite_singularity"),
state: "gas",
density: 0.08,
ignoreAir: true
@ -4310,7 +4310,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
stateLow: ["plasma_explosion","plasma","plasma","plasma","plasma","plasma","plasma","plasma"],
burnInto: ["plasma_explosion","plasma","plasma","plasma","plasma","plasma","plasma","plasma"],
category: "energy",
ignore: ["ash","slag","wall","plasma","fire","smoke"],
ignore: ["ash","slag","wall","plasma","fire","smoke","liquid_god_slayer_fire"].concat(searchElements("haseulite")).concat("haseulite_singularity"),
burning: true,
burnTime: 500,
burnTempChange: 10,
@ -4320,6 +4320,150 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
ignoreAir: true
};
elements.liquid_holy_fire = {
color: ["#FFFF96","#FFBF49","#CE743B"], //placeholder
tick: function(pixel) {
var moveResult = tryMoveAndReturnBlockingPixel(pixel,pixel.x + randomIntegerBetweenTwoValues(-1,1),pixel.y + 1);
var blockingPixels = [];
var secondMoveResult = null;
if(typeof(moveResult) == "object" && !(elements[pixel.element].ignore.concat(pixel.element).includes(moveResult.element))) {
blockingPixels.push(moveResult)
};
//if move1Result = true then nothing else happens
if(moveResult !== true) {
var coords = [randomSign(),0].map(offsetPair => addArraysInPairs(offsetPair,[pixel.x,pixel.y]));
secondMoveResult = tryMoveAndReturnBlockingPixel(pixel,...coords);
if(typeof(secondMoveResult) == "object" && !(elements[pixel.element].ignore.concat(pixel.element).includes(secondMoveResult.element))) {
blockingPixels.push(secondMoveResult)
};
};
if(blockingPixels.length > 0) {
blockingPixels.forEach(function(pixel) {
var blessRxn = elements.bless.reactions[pixel.element];
if(typeof(blessRxn) == "object") {
var elem2 = blessRxn.elem2;
if(elem2 !== null) {
while(Array.isArray(elem2)) { elem2 = randomChoice(elem2) };
changePixel(pixel,elem2)
}
};
var value = Math.random();
if(value < 0.01) {
if(pixel.burnInto) {
finishBurn(pixel)
} else {
changePixel(pixel,randomChoice(["ash","ash","light"]))
}
} else if(value < 0.20) {
pixel.burning = true;
pixel.burnStart ??= pixelTicks;
} else if(value < 0.205) {
changePixel(pixel,randomChoice(["ash","ash","light"]))
} else {
pixel.temp += 10; pixelTempCheck(pixel)
};
return
})
};
doDefaults(pixel);
},
temp:8000,
tempLow:2000,
stateLow: "holy_fire",
burnInto: ["bless","fire"],
category: "energy",
burning: true,
burnTime: 1000,
burnTempChange: 10,
fireElement: "holy_fire",
ignore: ["light","bless","wall","plasma","fire","smoke","holy_fire"].concat(searchElements("haseulite")).concat("haseulite_singularity"),
state: "liquid",
density: 270,
ignoreAir: true
};
elements.liquid_god_slayer_fire = {
color: ["#FFBACE","#FC6DCA","#9954B0"],
tick: function(pixel) {
var moveResult = tryMoveAndReturnBlockingPixel(pixel,pixel.x + randomIntegerBetweenTwoValues(-1,1),pixel.y + 1);
var blockingPixels = [];
var secondMoveResult = null;
if(typeof(moveResult) == "object" && !(elements[pixel.element].ignore.concat(pixel.element).includes(moveResult.element))) {
blockingPixels.push(moveResult)
};
//if move1Result = true then nothing else happens
if(moveResult !== true) {
var coords = [randomSign(),0].map(offsetPair => addArraysInPairs(offsetPair,[pixel.x,pixel.y]));
secondMoveResult = tryMoveAndReturnBlockingPixel(pixel,...coords);
if(typeof(secondMoveResult) == "object" && !(elements[pixel.element].ignore.concat(pixel.element).includes(secondMoveResult.element))) {
blockingPixels.push(secondMoveResult)
};
};
if(blockingPixels.length > 0) {
blockingPixels.forEach(function(pixel) {
var value = Math.random();
var randomDefaultResult = randomChoice(["ash","slag","plasma"]);
var oldTemp = pixel.temp;
if(value < 0.03) {
if(pixel.stateHigh) {
meltPixel(pixel);
}
} else if(value < 0.06) {
if(pixel.burnInto) {
finishBurn(pixel);
} else {
changePixel(pixel,randomDefaultResult)
}
} else if(value < 0.09) {
if(pixel.breakInto) {
breakPixel(pixel);
} else {
changePixel(pixel,randomDefaultResult)
}
} else if(value < 0.24) {
pixel.burning = true;
pixel.burnStart ??= pixelTicks;
} else if(value < 0.245) {
changePixel(pixel,randomDefaultResult)
} else {
pixel.temp += 25; pixelTempCheck(pixel)
};
if(pixel) {
pixel.temp = Math.max(oldTemp,pixel.temp)
};
return
})
};
doDefaults(pixel);
},
temp:15000,
tempLow:2000,
stateLow: ["plasma_explosion","liquid_plasma","liquid_plasma","liquid_plasma","liquid_plasma","liquid_plasma","liquid_plasma","liquid_plasma"],
burnInto: "god_slayer_fire",
category: "energy",
ignore: ["ash","slag","wall","plasma","fire","smoke","god_slayer_fire"].concat(searchElements("haseulite")).concat("haseulite_singularity"),
burning: true,
burnTime: 1000,
burnTempChange: 14,
fireElement: "god_slayer_fire",
state: "liquid",
density: 380,
ignoreAir: true
};
elements.god_slayer_bomb = {
color: ["#a43dcc", "#49b6d1"],
tick: function(pixel) {
@ -4716,7 +4860,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
burnTempChange: 2,
fireSpawnChance: 5,
state: "liquid",
density: 21,
density: 200,
};
elements.liquid_cold_fire = {
@ -4740,7 +4884,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
fireElement: "cold_fire",
category: "energy liquids",
state: "liquid",
density: 42,
density: 420,
};
elements.liquid_rad_fire = {
@ -4807,7 +4951,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
fireSpawnChance: 5,
fireElement: "rad_fire",
state: "liquid",
density: 21,
density: 210,
};
elements.radiation.reactions.liquid_fire = { "elem2":"liquid_rad_fire", "chance":0.4 };
@ -18696,8 +18840,12 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
rad_fire: {value: 10, remainder: "rad_smoke"},
liquid_fire: {value: 12, remainder: ["fire","liquid_smoke","smoke"]},
plasma: {value: 15, remainder: "fire"},
holy_fire: 25,
god_slayer_fire: 40,
liquid_rad_fire: {value: 20, remainder: [null,"rad_fire","rad_fire","rad_smoke","rad_smoke"]},
liquid_plasma: {value: 30, remainder: ["plasma","liquid_fire","fire"]},
liquid_holy_fire: {value: 50, remainder: ["holy_fire","bless","light"]},
liquid_god_slayer_fire: {value: 80, remainder: ["god_slayer_fire",null,null]},
liquid_irradium: {value: 4, remainder: 0}
};
@ -18710,7 +18858,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
if(isNaN(pixel.value)) { pixel.value = 0 };
pixel.color = lightenColor(pixel.oldColor,pixel.value / 3);
var mVal = elements[pixel.element].haseulitoidMaxValue ?? 350;
var mVal = elements[pixel.element].haseulitoidMaxValue ?? 800;
if(pixel.value >= mVal) {
var coldBoomChance = Math.max(0.008 * ((pixel.value - mVal) / (mVal * 2/7)), 0.001);
if(Math.random() < coldBoomChance) {