Merge branch 'R74nCom:main' into main
This commit is contained in:
commit
ef31f472a5
|
|
@ -230,15 +230,16 @@
|
|||
<tr><td>nocancer.js</td><td>Removes cancer from the game one tick after it is created</td><td>mollthecoder</td></tr>
|
||||
<tr><td>nocancer2.js</td><td>Removes cancer from the game altogether. May be incompatible with other mods that spawn cancer</td><td>mollthecoder</td></tr>
|
||||
<tr><td>nograssgrow.js</td><td>Prevents Grass from growing</td><td>mollthecoder</td></tr>
|
||||
<tr><td>obsidian.js</td><td>Adds Obsidian</td><td>Jayd</td></tr>
|
||||
<tr><td>pizzasstuff.js</td><td>New animals, foods, and plants</td><td>_ilikepizza_</td></tr>
|
||||
<tr><td>primordial_birthpool.js</td><td>A cross between Primordial Soup and Birthpool. Requires F&M</td><td>Alice</td></tr>
|
||||
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||
<tr><td>the_ground_og.js</td><td>Simplified and more stable version of the_ground.js</td><td>Alice</td></tr>
|
||||
<tr><td>the_ground.js</td><td>Adds several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr>
|
||||
<tr><td>toothpaste.js</td><td>Teeth and paste</td><td>Alice</td></tr>
|
||||
<tr><td>volcanic_expansion.js</td><td>Adds Obsidian, Pumice, and Andesite rocks</td><td>Jayd</td></tr>
|
||||
|
||||
<!----><tr><td class="modCat" colspan="3">Fun & Games</td></tr><!---->
|
||||
<tr><td>all_around_fillers.js</td><td>Adds directional Filler variants</td><td>idk73248</td></tr>
|
||||
<tr><td>allliquids.js</td><td>Made all elements liquids</td><td>Alex</td></tr>
|
||||
<tr><td>amogus.js</td><td>Adds a small amogus structure</td><td>Alice</td></tr>
|
||||
<tr><td>elem3.js</td><td>Adds all elements and combinations from Elemental 3 [Very Large]</td><td>Sophie</td></tr>
|
||||
|
|
@ -271,6 +272,9 @@
|
|||
<tr><td>rainbow_tests.js</td><td>Adds variants of the rainbow element with different maths</td><td>Alice</td></tr>
|
||||
<tr><td>Shroomboxels.js</td><td>A variant of acid_and_shapes.js that uses a different trigonometric function</td><td>Alice</td></tr>
|
||||
|
||||
<!----><tr><td class="modCat" colspan="3">Compilations</td></tr><!---->
|
||||
<tr><td>a_mod_by_alice.js</td><td>A mod combining most of Alice’s mods, and some other things</td><td>Alice</td></tr>
|
||||
|
||||
<!----><tr><td class="modCat" colspan="3">Technical Libraries & Tests</td></tr><!---->
|
||||
<tr><td>a_bundle_of_tests.js</td><td>Several test functions</td><td>Alice</td></tr>
|
||||
<tr><td>betterMenuScreens.js</td><td>Library for mods to create their own menus</td><td>ggod</td></tr>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -14,7 +14,7 @@ try {
|
|||
|
||||
//ESSENTIAL COMMON FUNCTIONS (CODE LIBRARY) ##
|
||||
|
||||
//U.R.L.
|
||||
//URL
|
||||
|
||||
urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
|
|
@ -616,9 +616,10 @@ try {
|
|||
throw new Error("Offset is NaN");
|
||||
};
|
||||
|
||||
var oldColor = color; //for error display
|
||||
color = hexToRGB(color);
|
||||
if(color === null) {
|
||||
throw new Error("hexToRGB(color) was null (maybe it's an invalid hex triplet?)");
|
||||
throw new Error(`hexToRGB(color) was null (${oldColor}, maybe it's an invalid hex triplet?)`);
|
||||
};
|
||||
|
||||
//console.log("converted color: " + JSON.stringify(color));
|
||||
|
|
@ -772,9 +773,10 @@ try {
|
|||
};
|
||||
//console.log(`octothorpe checked: ${color}`);
|
||||
|
||||
var oldColor = color;
|
||||
color = hexToRGB(color);
|
||||
if(color === null) {
|
||||
throw new Error("hexToRGB(color) was null (maybe it's an invalid hex triplet?)");
|
||||
throw new Error(`hexToRGB(color) was null (${oldColor}, maybe it's an invalid hex triplet?)`);
|
||||
};
|
||||
|
||||
switch(outputType.toLowerCase()) {
|
||||
|
|
@ -1498,18 +1500,29 @@ try {
|
|||
};
|
||||
};
|
||||
|
||||
function breakPixel(pixel,changetemp=false) {
|
||||
var info = elements[pixel.element];
|
||||
if(typeof(info.breakInto) === "undefined") {
|
||||
return false;
|
||||
function breakPixel(pixel,changeTemp=false,defaultBreakIntoDust=false) {
|
||||
var result = elements[pixel.element].breakInto;
|
||||
if (result === undefined) {if(defaultBreakIntoDust) { result = "dust" } else { return }};
|
||||
// if it is an array, choose a random item, else just use the value
|
||||
while (Array.isArray(result)) {
|
||||
result = randomChoice(result);
|
||||
};
|
||||
var breakIntoElement = info.breakInto;
|
||||
if(Array.isArray(breakIntoElement)) {
|
||||
breakIntoElement = breakIntoElement[Math.floor(Math.random() * breakIntoElement.length)]
|
||||
};
|
||||
changePixel(pixel,breakIntoElement,changetemp)
|
||||
// change the pixel to the result
|
||||
if (result === null) {
|
||||
deletePixel(pixel.x,pixel.y);
|
||||
return
|
||||
};
|
||||
if (elements[pixel.element].breakIntoColor) {
|
||||
var oldelement = pixel.element;
|
||||
changePixel(pixel,result);
|
||||
pixel.color = pixelColorPick(pixel, elements[oldelement].breakIntoColor);
|
||||
}
|
||||
else {
|
||||
changePixel(pixel,result);
|
||||
}
|
||||
}
|
||||
|
||||
defaultHardness = 0.3;
|
||||
function tryBreak(pixel,changetemp=false,defaultBreakIntoDust=false) {
|
||||
var info = elements[pixel.element];
|
||||
var hardness = defaultHardness;
|
||||
|
|
@ -2052,6 +2065,26 @@ try {
|
|||
}*/
|
||||
};
|
||||
|
||||
//Language
|
||||
|
||||
function englishFormatList(thingsArrayIn) {
|
||||
var thingsArray = thingsArrayIn;
|
||||
var amount = thingsArray.length;
|
||||
if(amount == 1) {
|
||||
return thingsArray[0]
|
||||
} else if(amount == 2) {
|
||||
return thingsArray.join(" and ")
|
||||
} else {
|
||||
var lastItem = thingsArray[thingsArray.length - 1];
|
||||
thingsArray[thingsArray.length - 1] = "and " + lastItem;
|
||||
return thingsArray.join(", ")
|
||||
};
|
||||
};
|
||||
|
||||
function capitalizeFirstLetter(string,locale=null) {
|
||||
return string[0][locale ? "toLocaleUpperCase" : "toUpperCase"](locale) + string.slice(1)
|
||||
};
|
||||
|
||||
//COLOR MANIPULATION TOOLS ##
|
||||
|
||||
var colorToolCounter = 0;
|
||||
|
|
@ -3337,7 +3370,14 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
createCategoryDiv(category);
|
||||
categoryDiv = document.getElementById("category-"+category);
|
||||
}
|
||||
if(Array.isArray(elements[element].color) && elements[element].color.length == 1) {
|
||||
//temporarily make the single-item array into a string just for button generation, and then turn it back into an array just in case
|
||||
elements[element].color = elements[element].color[0];
|
||||
createElementButton(element);
|
||||
elements[element].color = [elements[element].color]
|
||||
} else {
|
||||
createElementButton(element);
|
||||
}
|
||||
}
|
||||
// Set the first button in categoryControls div to be the current category
|
||||
document.getElementById("categoryControls").children[0].click()
|
||||
|
|
@ -3504,6 +3544,8 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
var firstDiv = document.getElementsByClassName("category")[0];
|
||||
var firstElementButton = firstDiv.getElementsByClassName("elementButton")[0];
|
||||
selectElement(firstElementButton.getAttribute("element"));
|
||||
|
||||
gameLoaded = true
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -3592,18 +3634,17 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
else if (damage > 0.25) {
|
||||
if (info.breakInto) {
|
||||
// if it is an array, choose a random item, else just use the value
|
||||
if (Array.isArray(info.breakInto)) {
|
||||
var result = info.breakInto[Math.floor(Math.random() * info.breakInto.length)];
|
||||
if (info.breakInto !== undefined) {
|
||||
breakPixel(pixel);
|
||||
} else {
|
||||
if (Array.isArray(fire)) {
|
||||
var newfire = fire[Math.floor(Math.random() * fire.length)];
|
||||
}
|
||||
else {
|
||||
var result = info.breakInto;
|
||||
var newfire = fire;
|
||||
}
|
||||
changePixel(pixel,newfire);
|
||||
}
|
||||
if(typeof(breakIntoElement) === "undefined") {
|
||||
deletePixel(pixel.x,pixel.y);
|
||||
continue
|
||||
};
|
||||
// change the pixel to the result
|
||||
changePixel(pixel,result,changeTemp);
|
||||
if(info.onExplosionBreakOrSurvive) {
|
||||
info.onExplosionBreakOrSurvive(pixel,x,y,radius,fire,smoke,power,damage);
|
||||
};
|
||||
|
|
@ -3875,8 +3916,41 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
|
||||
//No changeTemp for fire=>smoke
|
||||
elements.fire.tick = function(pixel){
|
||||
behaviors.UL_UR_OPTIMIZED(pixel);
|
||||
if (!pixel.del && settings.burn===0 && (pixelTicks-pixel.start > 70) && Math.random() < 0.1 ) { changePixel(pixel,"smoke",false) }
|
||||
if (pixel.start === pixelTicks) {return}
|
||||
if (pixel.charge && elements[pixel.element].behaviorOn) {
|
||||
pixelTick(pixel)
|
||||
}
|
||||
var move1Spots = [
|
||||
[pixel.x, pixel.y-1],
|
||||
[pixel.x+1, pixel.y-1],
|
||||
[pixel.x-1, pixel.y-1],
|
||||
]
|
||||
var moved = false;
|
||||
for (var i = 0; i < move1Spots.length; i++) {
|
||||
var coords = move1Spots[Math.floor(Math.random()*move1Spots.length)];
|
||||
coords = {x: coords[0], y: coords[1]};
|
||||
if(!isEmpty(coords.x,coords.y,true) && pixelMap[coords.x]?.[coords.y]?.element == pixel.element && pixelMap[coords.x][coords.y].temp < pixel.temp) {
|
||||
swapPixels(pixel,pixelMap[coords.x][coords.y]);
|
||||
moved = true; break
|
||||
} else {
|
||||
if (tryMove(pixel, coords.x, coords.y)) { moved = true; break; }
|
||||
else { move1Spots.splice(move1Spots.indexOf(coords), 1);}
|
||||
}
|
||||
}
|
||||
if (!moved && !pixel.del) {
|
||||
var move2Spots = [
|
||||
[pixel.x, pixel.y+1],
|
||||
[pixel.x+1, pixel.y],
|
||||
[pixel.x-1, pixel.y],
|
||||
]
|
||||
for (var i = 0; i < move2Spots.length; i++) {
|
||||
var coords = move2Spots[Math.floor(Math.random()*move2Spots.length)];
|
||||
if (tryMove(pixel, coords[0], coords[1])) { break; }
|
||||
else { move2Spots.splice(move2Spots.indexOf(coords), 1); }
|
||||
}
|
||||
}
|
||||
if (!pixel.del) { doDefaults(pixel); }
|
||||
if (!pixel.del && settings.burn===0 && (pixelTicks-pixel.start > 70) && Math.random() < 0.1 ) { changePixel(pixel,"smoke",false) };
|
||||
};
|
||||
|
||||
//New elements
|
||||
|
|
@ -4214,6 +4288,9 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
ignoreAir: true
|
||||
};
|
||||
|
||||
elements.cloner.burnTime = Infinity;
|
||||
elements.cloner.burnInto = "cloner";
|
||||
|
||||
elements.cold_torch = {
|
||||
"color": "#4394d6",
|
||||
"behavior": [
|
||||
|
|
@ -6827,7 +6904,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = -1; j < 2; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6854,7 +6931,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = -3; j < 4; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6882,7 +6959,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6910,7 +6987,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6938,7 +7015,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6966,7 +7043,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6994,7 +7071,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7022,7 +7099,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7050,7 +7127,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7078,7 +7155,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7106,7 +7183,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7136,9 +7213,9 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
if(pixel.uwu < 8) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
} else {
|
||||
pixel.owo += 1
|
||||
pixel.owo++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7916,7 +7993,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
behavior: behaviors.GAS,
|
||||
category: "gases",
|
||||
state: "gas",
|
||||
density: 550,
|
||||
density: 550, //7989 yay soshi!
|
||||
tick: function(pixel) {
|
||||
if(pixel.y % 6 == 0) {
|
||||
if(pixel.x % 6 == 0) {
|
||||
|
|
@ -7986,7 +8063,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
}
|
||||
}
|
||||
} else {
|
||||
if(!settings.bg || settings.bg == "#fffff0") { //7989 yay soshi!
|
||||
if(!settings.bg || settings.bg == "#fffff0") {
|
||||
pixel.color = "rgb(255,255,247)"
|
||||
} else {
|
||||
pixel.color = "rgb(255,255,240)"
|
||||
|
|
@ -8207,6 +8284,8 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
["peach", "#ffbf7f"],
|
||||
["mint", "#4df0a9"],
|
||||
["gray", "#7F7F7F"],
|
||||
["lime", "#7FFF00"],
|
||||
["black", "#000000"],
|
||||
["white", "#FFFFFF"],
|
||||
["sky_blue", "#99d1f2"]
|
||||
];
|
||||
|
|
@ -8215,6 +8294,62 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
newLegacyFnmDye(dyeColors[i][0],dyeColors[i][1])
|
||||
};
|
||||
|
||||
eLists.LED = ["led_r","led_g","led_b"];
|
||||
|
||||
function newLED(abbrev,hexColor,baseColorOverrideHex=null) {
|
||||
if(!(hexColor.startsWith("#"))) { hexColor = "#" + hexColor };
|
||||
if(baseColorOverrideHex && !(baseColorOverrideHex.startsWith("#"))) { baseColorOverrideHex = "#" + baseColorOverrideHex };
|
||||
abbrev = abbrev.toLowerCase();
|
||||
var key = `led_${abbrev}`;
|
||||
var pixelColor = baseColorOverrideHex ?? changeLuminance(hexColor,0x66/0xff,"multiply","hex",null,false);
|
||||
|
||||
elements[key] = {
|
||||
behavior: behaviors.WALL,
|
||||
reactions: {
|
||||
"light": {"charge1":1},
|
||||
"liquid_light": {"charge1":1},
|
||||
},
|
||||
color: pixelColor,
|
||||
colorOn: hexColor,
|
||||
category: "machines",
|
||||
tempHigh: 1500,
|
||||
stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"],
|
||||
conduct: 1,
|
||||
breakInto: "glass_shard"
|
||||
};
|
||||
|
||||
eLists.LED.push(key)
|
||||
};
|
||||
|
||||
var ledColors = [
|
||||
["c", "#00FFFF"], //cyan
|
||||
["y", "#FFFF00"], //yellow
|
||||
["m", "#FF00FF"], //magenta (cursed)
|
||||
["p", "#AB00C2"], //purple (cursed)
|
||||
["v", "#7700FF"], //violet
|
||||
["w", "#FFFFFF"], //white (cursed)
|
||||
["gy", "#7F7F7F"], //gray (more cursed)
|
||||
["bl", "#000000", "#2b2b2b"], //black (super cursed)
|
||||
["o", "#FF7F00"], //orange
|
||||
["a", "#FFBF00"], //amber
|
||||
["l", "#7FFF00"], //lime
|
||||
["rs", "#FF0067"], //rose (cursed)
|
||||
["pk", "#FF7FFF"], //pink (cursed)
|
||||
["bg", "#9F005F"], //burgundy (cursed)
|
||||
["pc", "#ffbf7f"], //peach
|
||||
["mg", "#4df0a9"], //mint green
|
||||
["sb", "#99d1f2"] //sky blue (cursed)
|
||||
];
|
||||
|
||||
for(var i = 0; i < ledColors.length; i++) {
|
||||
newLED(...ledColors[i]);
|
||||
};
|
||||
|
||||
for(var i = 0; i < eLists.LED.length; i++) {
|
||||
var key = eLists.LED[i];
|
||||
elements.malware.reactions[key] = { elem2:eLists.LED, chance:0.01 }
|
||||
};
|
||||
|
||||
//ASSORTED RAINBOW VARIANTS ##
|
||||
|
||||
elements.concoction.reactions.diorite_gravel = {
|
||||
|
|
@ -10275,7 +10410,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = -1; j < 2; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == "msmine") {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10627,7 +10762,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = -1; j < 2; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1;
|
||||
pixel.uwu++;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -10719,7 +10854,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
|||
for (let j = -1; j < 2; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1;
|
||||
pixel.uwu++;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -15537,9 +15672,14 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
viscosity: 3**4,
|
||||
}
|
||||
|
||||
elements.redstone_dust.tempHigh = 2500
|
||||
elements.redstone_dust.tempHigh = 2500;
|
||||
|
||||
elements.redstone_dust.stateHigh = "destabilized_redstone"
|
||||
elements.redstone_dust.stateHigh = "destabilized_redstone";
|
||||
|
||||
elements.redstone_dust.conduct = 0.9;
|
||||
|
||||
elements.redstone_dust.colorOn = ["#FF2424","#FF0000","#FF1200"];
|
||||
elements.redstone_dust.color = ["#7f0000","#5f0000","#5f0500"];
|
||||
|
||||
elements.destabilized_redstone = {
|
||||
color: ["#9e0303", "#98061a", "#b80704", "#c4020c", "#f70008", "#9e0303", "#98061a", "#b80704", "#e3020a", "#8c0303", "#8c0303"],
|
||||
|
|
@ -16770,9 +16910,10 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
"fire": { elem2: null }
|
||||
},
|
||||
tick: function(pixel) {
|
||||
backgroundColor = hexToRGB(settings.bg);
|
||||
pixel.rgbValue = "rgb("+backgroundColor.r+","+backgroundColor.g+","+backgroundColor.b+")";
|
||||
pixel.color = pixel.rgbValue;
|
||||
/*var baseColor = settings.bg instanceof Array ? averageRgbPrefixedColorArray(settings.bg.map(x => convertColorFormats(x,"rgb"))) : convertColorFormats(settings.bg,"rgb");
|
||||
baseColor = convertColorFormats(baseColor,"json");
|
||||
pixel.color = "rgba(" + Object.values(baseColor).join(",") + ",0)"*/
|
||||
pixel.color = "rgba(0,0,0,0)"
|
||||
},
|
||||
hardness: 0.6,
|
||||
category: "gases",
|
||||
|
|
@ -17986,7 +18127,81 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
elements[kesddfroged2[i]].reactions ??= {}; elements[kesddfroged2[i]].reactions[kesddfroged[j]] = {"elem1": "kurshuth_alloy", "elem2": "kurshuth_alloy"}
|
||||
}
|
||||
};
|
||||
})
|
||||
});
|
||||
|
||||
function newMetal(name,color,meltingPoint,boilingPoint,hardness,density,gasDensity,conduct,categoryOverride = null) {
|
||||
var temp = {
|
||||
"name": name,
|
||||
"color": color,
|
||||
"meltingPoint": meltingPoint,
|
||||
"boilingPoint": boilingPoint,
|
||||
"hardness": hardness,
|
||||
"density": density,
|
||||
"gasDensity": gasDensity,
|
||||
"conduct": conduct
|
||||
};
|
||||
var tempNulls = Object.keys(temp).filter(key => (typeof(temp[key]) == undefined || temp[key] == null));
|
||||
if(tempNulls.length > 0) {
|
||||
var errorMessage = capitalizeFirstLetter(englishFormatList(tempNulls));
|
||||
throw new Error(`newMetal: ${errorMessage} {tempNulls.length == 1 ? "is" : "are"} required (generating "${name}")`);
|
||||
};
|
||||
|
||||
var scrapColor = gravelizeToHex(color);
|
||||
|
||||
elements[name] = {
|
||||
"color": (window["gameLoaded"] ?? false) ? (Array.isArray(color) ? color.map(x => convertColorFormats(x,"rgb")) : convertColorFormats(color,"rgb")) : color,
|
||||
"colorObject": (window["gameLoaded"] ?? false) ? (Array.isArray(color) ? color.map(x => convertColorFormats(x,"json")) : convertColorFormats(color,"json")) : undefined,
|
||||
"behavior": behaviors.WALL,
|
||||
"category": "solids",
|
||||
"state": "solid",
|
||||
"density": density,
|
||||
"conduct": conduct,
|
||||
"tempHigh": meltingPoint,
|
||||
"breakInto": `${name}_scrap`,
|
||||
"hardness": hardness
|
||||
};
|
||||
|
||||
if(categoryOverride) { elements[name].category = categoryOverride };
|
||||
|
||||
elements[`molten_${name}`] = {
|
||||
"tempHigh": boilingPoint
|
||||
};
|
||||
|
||||
elements[`${name}_gas`] = {
|
||||
"density": gasDensity
|
||||
};
|
||||
|
||||
elements[`${name}_scrap`] = {
|
||||
"color": (window["gameLoaded"] ?? false) ? (Array.isArray(scrapColor) ? scrapColor.map(x => convertColorFormats(x,"rgb")) : convertColorFormats(scrapColor,"rgb")) : scrapColor,
|
||||
"colorObject": (window["gameLoaded"] ?? false) ? (Array.isArray(scrapColor) ? scrapColor.map(x => convertColorFormats(x,"json")) : convertColorFormats(scrapColor,"json")) : undefined,
|
||||
"behavior": (window["gameLoaded"] ?? false) ? undefined : behaviors.POWDER,
|
||||
"tick": (window["gameLoaded"] ?? false) ? behaviors.POWDER : undefined,
|
||||
"tempHigh": meltingPoint,
|
||||
"stateHigh": `molten_${name}`,
|
||||
"category": "powders",
|
||||
"hidden": true,
|
||||
"density": density * 0.09,
|
||||
"conduct": conduct * 0.4,
|
||||
"movable": true,
|
||||
};
|
||||
|
||||
if(window["gameLoaded"] ?? false) {
|
||||
delete elements[`${name}_scrap`].behavior;
|
||||
createElementButton(name);
|
||||
if(settings.unhide == 1) { createElementButton(`${name}_scrap`) }
|
||||
autoGen(`molten_${name}`,name,"molten");
|
||||
elements[`molten_${name}`].color = elements[`molten_${name}`].color.map(x => convertColorFormats(x,"rgb"));
|
||||
elements[`molten_${name}`].colorObject = elements[`molten_${name}`].color.map(x => convertColorFormats(x,"json"));
|
||||
} else {
|
||||
delete elements[`${name}_scrap`].tick;
|
||||
};
|
||||
|
||||
return [elements[name],elements[`${name}_scrap`]];
|
||||
};
|
||||
|
||||
//newMetal( "exidmaden", ["#F8EDCF", "#EEAAAE", "#E5678D", "#A6659C", "#6763AD"], 2134, 6769, 0.8, 32333, 49.9, 0.88 );
|
||||
//newMetal( "jisooium", "#9d0ac2", 8367, 10003, 0.63, 15024, 12.2, 0.9 );
|
||||
//newMetal( "twicium", ["#F9C596", "#FC5D9D"], 10240, 18018, 0.88, 29029, 24.3, 0.91 );
|
||||
|
||||
//ASSORTED LOONA-THEMED MATERIALS ##
|
||||
|
||||
|
|
@ -19295,9 +19510,12 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
if(isNaN(pixel.temp)) { pixel.temp = 20 };
|
||||
if(Math.random() < 0.013 && exposedToAir(pixel)) {
|
||||
changePixel(pixel,"vivite_oxide",false);
|
||||
pixel.temp += 0.1;
|
||||
pixel.temp += 4;
|
||||
};
|
||||
},
|
||||
burnTime: 160,
|
||||
burnTempChange: 10.65,
|
||||
burnInto: "vivite_oxide_powder",
|
||||
noResistance: true,
|
||||
reactions: {
|
||||
"ice": { elem1: "vivite_oxide", elem2: null, temp1: 0.2 },
|
||||
|
|
@ -19327,10 +19545,23 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
behavior: behaviors.POWDER,
|
||||
tick: function(pixel) {
|
||||
if(Math.random() < 0.027 && exposedToAir(pixel)) {
|
||||
changePixel(pixel,"vivite_oxide_powder",false);
|
||||
pixel.temp += 0.1;
|
||||
if(getEmptyMooreNeighbors(pixel).length > 4) {
|
||||
pixel.burning = true;
|
||||
pixel.burnStart = pixelTicks;
|
||||
} else {
|
||||
pixel.temp += 18;
|
||||
changePixel(pixel,getStateAtTemp("vivite_oxide_powder",pixel.temp),false);
|
||||
};
|
||||
|
||||
if(pixel.burning && ((pixel.temp + (2 * elements[pixel.element].burnTempChange)) > elements[pixel.element].tempHigh)) {
|
||||
changePixel(pixel,elements[pixel.element].burnInto,false);
|
||||
pixel.temp += 213;
|
||||
};
|
||||
};
|
||||
},
|
||||
burnTime: 8,
|
||||
burnTempChange: 213,
|
||||
burnInto: "vivite_oxide_powder",
|
||||
reactions: {
|
||||
"ice": { elem1: "vivite_oxide_powder", elem2: null, temp1: 0.2 },
|
||||
"water": { elem1: "vivite_oxide_powder", elem2: null, temp1: 0.2 },
|
||||
|
|
@ -19345,7 +19576,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
"salt_ice": { elem1: "vivite_oxide_powder", elem2: "salt" }
|
||||
},
|
||||
noResistance: true,
|
||||
tempHigh: 938,
|
||||
tempHigh: 1725,
|
||||
stateHigh: "molten_vivite",
|
||||
category: "solids",
|
||||
state: "solid",
|
||||
|
|
@ -19382,7 +19613,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
return false;
|
||||
};
|
||||
|
||||
if(elements[newElement].noViviteSlag) { //Excluded
|
||||
if(elements[newElement].noViviteSlag || elements[pixel.element].ignore?.includes(newPixel.element)) { //Excluded
|
||||
return false;
|
||||
};
|
||||
|
||||
|
|
@ -19399,12 +19630,13 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
color: ["#f7a6e5", "#fa70d1", "#f0bbf2"],
|
||||
colorOn: ["#ff63ac", "#ff21bd", "#e81af0"],
|
||||
fireColor: ["#ff66ba", "#ff85ef", "#ff99f7"],
|
||||
ignore: ["wall","heejinite","jinsoulite","haseulite","molten_heejinite","molten_jinsoulite","molten_haseulite","yvesite","molten_yvesite"],
|
||||
tick: function(pixel) {
|
||||
var info = elements[pixel.element];
|
||||
|
||||
if(Math.random() < 0.022 && exposedToAir(pixel)) {
|
||||
changePixel(pixel,pixel.temp > 7315.27 ? "molten_vivite_oxide" : "vivite_oxide_powder",false)
|
||||
pixel.temp += 0.1;
|
||||
pixel.temp += 18;
|
||||
};
|
||||
|
||||
if(Math.random() < 0.025) {
|
||||
|
|
@ -19448,10 +19680,13 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
},
|
||||
density: 8212,
|
||||
state: "liquid",
|
||||
burnTime: 160,
|
||||
burnTempChange: 10.65,
|
||||
burnInto: "vivite_oxide_powder",
|
||||
hardness: 0.88,
|
||||
viscosity: 10000,
|
||||
breakInto: "vivite_gas",
|
||||
temp: 1100,
|
||||
temp: 2000,
|
||||
tempHigh: 2256,
|
||||
stateHigh: "vivite_gas",
|
||||
tempLow: 938,
|
||||
|
|
@ -19582,13 +19817,22 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
fireColor: ["#ff66ba", "#ff85ef", "#ff99f7"],
|
||||
tick: function(pixel) {
|
||||
if(Math.random() < 0.032 && exposedToAir(pixel)) {
|
||||
if(getEmptyMooreNeighbors(pixel).length > 4) {
|
||||
pixel.burning = true;
|
||||
pixel.burnStart = pixelTicks;
|
||||
} else {
|
||||
pixel.temp += 18;
|
||||
changePixel(pixel,pixel.temp > 15500 ? "vivite_oxide_gas" : pixel.temp > 7315.27 ? "molten_vivite_oxide" : "vivite_oxide_powder",false);
|
||||
};
|
||||
};
|
||||
},
|
||||
behavior: behaviors.GAS,
|
||||
state: "gas",
|
||||
tempLow: 2256,
|
||||
stateLow: "molten_vivite",
|
||||
burnTime: 8,
|
||||
burnTempChange: 213,
|
||||
burnInto: "vivite_oxide_powder",
|
||||
density: 18.02,
|
||||
temp: 3300,
|
||||
hardness: 1,
|
||||
|
|
@ -20275,7 +20519,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
if(typeof(elements[thing]) == "object") {
|
||||
if(typeof(elements[thing]?.breakInto) == "undefined") {
|
||||
elements[`${thing}_scrap`] = {
|
||||
color: elements[thing].color,
|
||||
color: gravelizeToHex(elements[thing].color),
|
||||
behavior: behaviors.POWDER,
|
||||
tempHigh: elements[thing].tempHigh,
|
||||
stateHigh: thing,
|
||||
|
|
@ -21088,13 +21332,14 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
//Gravels
|
||||
|
||||
function gravelizeToHex(colorIn) {
|
||||
//console.log("gravelizeToHex called",colorIn);
|
||||
var colorInput = colorIn; //side effects?
|
||||
//console.log(`gravelizeToHex: ${colorInput}`)
|
||||
|
||||
//make sure in is array
|
||||
if(!colorInput instanceof Array) {
|
||||
if(!(colorInput instanceof Array)) {
|
||||
colorInput = [colorInput];
|
||||
};
|
||||
//console.log(`gravelizeToHex: ${colorInput}`)
|
||||
|
||||
//console.log(colorInput);
|
||||
|
||||
|
|
@ -26059,7 +26304,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
|||
};
|
||||
for(var i in adjacentCoords) {
|
||||
if(Math.random() < 0.005) {
|
||||
pixel.temp+=1;
|
||||
pixel.temp++;
|
||||
var newCoords = [
|
||||
pixel.x+adjacentCoords[i][0],
|
||||
pixel.y+adjacentCoords[i][1]
|
||||
|
|
@ -29425,29 +29670,6 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
};
|
||||
};
|
||||
|
||||
function breakPixel(pixel,changetemp=false,defaultBreakIntoDust=false) {
|
||||
var info = elements[pixel.element];
|
||||
if(typeof(info.breakInto) === "undefined") {
|
||||
if(defaultBreakIntoDust) {
|
||||
if(Math.random() < defaultBreakIntoDust) { changePixel(pixel,"dust",changetemp) };
|
||||
};
|
||||
return defaultBreakIntoDust;
|
||||
};
|
||||
var breakIntoElement = info.breakInto;
|
||||
if(Array.isArray(breakIntoElement)) {
|
||||
breakIntoElement = breakIntoElement[Math.floor(Math.random() * breakIntoElement.length)]
|
||||
};
|
||||
if(breakIntoElement === null) {
|
||||
deletePixel(pixel.x,pixel.y);
|
||||
return true;
|
||||
};
|
||||
if(typeof(breakIntoElement) === "undefined") { return false };
|
||||
changePixel(pixel,breakIntoElement,changetemp)
|
||||
return true;
|
||||
};
|
||||
|
||||
defaultHardness = 0.3;
|
||||
|
||||
function arrowAltTb(pixel,breakChanceMultiplier,changetemp=false,defaultBreakIntoDust=false) {
|
||||
var info = elements[pixel.element];
|
||||
var hardness = defaultHardness;
|
||||
|
|
@ -35465,7 +35687,16 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
//water reaction steal
|
||||
if(elements[newPixel.element].reactions?.water) {
|
||||
var waterRxn = elements[newPixel.element].reactions.water;
|
||||
var elem2 = waterRxn.elem2;
|
||||
var elem1 = waterRxn.elem1;
|
||||
while(Array.isArray(elem1)) {
|
||||
elem1 = randomChoice(elem1)
|
||||
};
|
||||
if(elem1 !== null) {
|
||||
changePixel(newPixel,elem1,true)
|
||||
}
|
||||
} else if(elements.water.reactions[newPixel.element]) {
|
||||
var waterRxn2 = elements.water.reactions[newPixel.element];
|
||||
elem2 = waterRxn2.elem2;
|
||||
while(Array.isArray(elem2)) {
|
||||
elem2 = randomChoice(elem2)
|
||||
};
|
||||
|
|
@ -35477,7 +35708,7 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
//add velocity;
|
||||
newPixel.vx ??= 0;
|
||||
newPixel.vy ??= 0;
|
||||
newPixel.vx += (pixel.direction * 6)
|
||||
newPixel.vx += (pixel.direction * 5)
|
||||
newPixel.vy += 3;
|
||||
};
|
||||
};
|
||||
|
|
@ -35488,6 +35719,92 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
density: elements.water.density
|
||||
};
|
||||
|
||||
elements.megatsunami = {
|
||||
color: ["#1f2aa3","#2641c9","#3a57c9"],
|
||||
behavior: behaviors.WALL,
|
||||
properties: {
|
||||
active: true,
|
||||
},
|
||||
tick: function(pixel) {
|
||||
//Iteration initial checks
|
||||
if(!pixel) {
|
||||
return;
|
||||
};
|
||||
if(!pixel.active) {
|
||||
deletePixel(pixel.x,pixel.y);
|
||||
};
|
||||
|
||||
//Initial property-setting
|
||||
var pixelIsOnLeft = (pixel.x < (width/2));
|
||||
pixel.fromX ??= pixelIsOnLeft ? 1 : width - 1;
|
||||
pixel.direction ??= pixelIsOnLeft ? 1 : -1;
|
||||
|
||||
var floorHeight = pixel.y + 1;
|
||||
while(isEmpty(pixel.x,floorHeight,false)) {
|
||||
floorHeight++
|
||||
};
|
||||
pixel.floorHeight ??= floorHeight;
|
||||
|
||||
//Actual doer code
|
||||
var bottomY = (pixel.floorHeight + 9); //extend 10 pixels below
|
||||
var topY = bottomY - 43; //topY < bottomY because in this game +Y is *downward*
|
||||
for(var h = 0; h < 2; h++) {
|
||||
var newX = pixel.fromX + pixel.direction;
|
||||
|
||||
if(outOfBounds(newX,1)) {
|
||||
pixel.active = false;
|
||||
return
|
||||
};
|
||||
|
||||
for(var i = bottomY; i >= topY; i--) {
|
||||
var waterToDo = randomChoice(["salt_water","salt_water","salt_water","dirty_water","dirty_water"]);
|
||||
var fc = {x: newX, y: i};
|
||||
if(outOfBounds(fc.x,fc.y)) {continue};
|
||||
if(isEmpty(fc.x,fc.y,false)) {
|
||||
//fill with water
|
||||
createPixel(waterToDo,fc.x,fc.y)
|
||||
} else {
|
||||
var newPixel = pixelMap[fc.x]?.[fc.y];
|
||||
if(!newPixel) { continue };
|
||||
//break
|
||||
tryBreak(newPixel,true,true);
|
||||
if(!newPixel) { continue };
|
||||
//water reaction steal
|
||||
if(elements[newPixel.element].reactions?.water) {
|
||||
var waterRxn = elements[newPixel.element].reactions.water;
|
||||
var elem1 = waterRxn.elem1;
|
||||
while(Array.isArray(elem1)) {
|
||||
elem1 = randomChoice(elem1)
|
||||
};
|
||||
if(elem1 !== null) {
|
||||
changePixel(newPixel,elem1,true)
|
||||
}
|
||||
} else if(elements.water.reactions[newPixel.element]) {
|
||||
var waterRxn2 = elements.water.reactions[newPixel.element];
|
||||
elem2 = waterRxn2.elem2;
|
||||
while(Array.isArray(elem2)) {
|
||||
elem2 = randomChoice(elem2)
|
||||
};
|
||||
if(elem2 !== null) {
|
||||
changePixel(newPixel,elem2,true)
|
||||
}
|
||||
};
|
||||
if(!newPixel) { continue };
|
||||
//add velocity;
|
||||
newPixel.vx ??= 0;
|
||||
newPixel.vy ??= 0;
|
||||
newPixel.vx += (pixel.direction * 13)
|
||||
newPixel.vy += 6;
|
||||
};
|
||||
};
|
||||
pixel.fromX += pixel.direction
|
||||
};
|
||||
},
|
||||
state: "solid",
|
||||
category: "special",
|
||||
density: elements.water.density
|
||||
};
|
||||
|
||||
elements.lava_tsunami = {
|
||||
color: ["#ff370a","#e84a23","#e67740"],
|
||||
behavior: behaviors.WALL,
|
||||
|
|
@ -40922,7 +41239,7 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
for (var i = 1; i < width; i++) {
|
||||
for (var j = 1; j < height; j++) {
|
||||
if (!isEmpty(i,j)) {
|
||||
pixelMap[i][j].temp += 1
|
||||
pixelMap[i][j].temp++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -41001,7 +41318,7 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
for (let j = -8; j < 9; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -41038,7 +41355,7 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
for (let j = -8; j < 9; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -41074,7 +41391,7 @@ Make sure to save your command in a file if you want to add this preset again.`
|
|||
for (let j = -8; j < 9; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
pixel.uwu++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,73 @@
|
|||
elements.top_filler = {
|
||||
color: "#ae4cd9",
|
||||
behavior: [
|
||||
["XX","CL","XX"],
|
||||
["XX","XX","XX"],
|
||||
["XX","XX","XX"]
|
||||
],
|
||||
category:"fillers",
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"neutron": { elem1:"lattice" },
|
||||
"proton": { elem1:"vertical" },
|
||||
"electric": { elem1:"horizontal" },
|
||||
"positron": { elem1:"vertical" },
|
||||
"plasma": { elem1:"armageddon", tempMin:500, charged:true },
|
||||
}
|
||||
},
|
||||
|
||||
elements.bottom_filler = {
|
||||
color: "#ae4cd9",
|
||||
behavior: [
|
||||
["XX","XX","XX"],
|
||||
["XX","XX","XX"],
|
||||
["XX","CL","XX"]
|
||||
],
|
||||
category:"fillers",
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"neutron": { elem1:"lattice" },
|
||||
"proton": { elem1:"vertical" },
|
||||
"electric": { elem1:"horizontal" },
|
||||
"positron": { elem1:"vertical" },
|
||||
"plasma": { elem1:"armageddon", tempMin:500, charged:true },
|
||||
}
|
||||
},
|
||||
|
||||
elements.right_filler = {
|
||||
color: "#ae4cd9",
|
||||
behavior: [
|
||||
["XX","XX","XX"],
|
||||
["XX","XX","CL"],
|
||||
["XX","XX","XX"]
|
||||
],
|
||||
category:"fillers",
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"neutron": { elem1:"lattice" },
|
||||
"proton": { elem1:"vertical" },
|
||||
"electric": { elem1:"horizontal" },
|
||||
"positron": { elem1:"vertical" },
|
||||
"plasma": { elem1:"armageddon", tempMin:500, charged:true },
|
||||
}
|
||||
},
|
||||
|
||||
elements.left_filler = {
|
||||
color: "#ae4cd9",
|
||||
behavior: [
|
||||
["XX","XX","XX"],
|
||||
["CL","XX","XX"],
|
||||
["XX","XX","XX"]
|
||||
],
|
||||
category:"fillers",
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"neutron": { elem1:"lattice" },
|
||||
"proton": { elem1:"vertical" },
|
||||
"electric": { elem1:"horizontal" },
|
||||
"positron": { elem1:"vertical" },
|
||||
"plasma": { elem1:"armageddon", tempMin:500, charged:true },
|
||||
}
|
||||
}
|
||||
|
||||
elements.filler.category = "fillers"
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
elements.lemon = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
color: ["#ffaa1d","#ffd300","#ffdf00","#ffff00","#fff44f"],
|
||||
behavior: behaviors.POWDER,
|
||||
category: "food",
|
||||
state: "solid",
|
||||
breakInto: "lemonade",
|
||||
tempHigh: 256,
|
||||
stateHigh: "steam",
|
||||
reactions: {
|
||||
"sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffffd8","#fffecf"] },
|
||||
}
|
||||
};
|
||||
|
||||
elements.lemonade = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
tempHigh: 150,
|
||||
stateHigh: "steam",
|
||||
tempMin: -15,
|
||||
color: ["#f8ff80","#f6ff6c","#f5ff57","#f3ff39","#f0ff00"],
|
||||
behavior: behaviors.LIQUID,
|
||||
category: "liquids",
|
||||
state: "liquid",
|
||||
};
|
||||
|
||||
elements.uranium_tea = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
viscosity: 1000,
|
||||
tempHigh: 1100,
|
||||
stateHigh: ["molten_uranium", "steam", "fragrance", "null"],
|
||||
color: ["#943e04", "#aa7a20", "#806612"],
|
||||
behavior: behaviors.RADLIQUID,
|
||||
category: "liquids",
|
||||
state: "liquid",
|
||||
reactions: {
|
||||
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 }
|
||||
},
|
||||
};
|
||||
|
||||
elements.sned = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
desc: "slowly expanding...",
|
||||
color: "#dfe0d9",
|
||||
behavior: [
|
||||
"XX|XX AND CR:sned%1|XX",
|
||||
"M2 AND CR:sned%1|XX|M2 AND CR:sned%1",
|
||||
"M1|M1 AND CH:sned%1|M1",
|
||||
],
|
||||
category: "joke",
|
||||
state: "liquid",
|
||||
excludeRandom: true
|
||||
};
|
||||
|
||||
elements.uranium_coffee = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},color: "#24100b",
|
||||
behavior: behaviors.LIQUID,
|
||||
reactions: {
|
||||
"stench": { elem2:null },
|
||||
"oxygen": { elem2:"fragrance", chance:0.01 },
|
||||
"sugar": { elem2:null, color1:"#99552A", chance:0.005},
|
||||
"honey": { elem2:null, color1:"#99552A", chance:0.005},
|
||||
"milk": { elem2:"foam", color1:"#CA9D68", chance:0.005},
|
||||
"nut_milk": { elem2:"foam", color1:"#CA9D68", chance:0.005},
|
||||
"cream": { elem2:"foam", color1:"#CA9D68", chance:0.005},
|
||||
"ice_cream": { elem2:null, color1:"#CA9D68", chance:0.005},
|
||||
"chocolate": { elem2:null, color1:"#6A3517", chance:0.005},
|
||||
"melted_chocolate": { elem2:null, color1:"#6A3517", chance:0.005},
|
||||
"water": { elem2:"coffee", tempMin:70, chance:0.2 },
|
||||
"salt_water": { elem2:"coffee", tempMin:70, chance:0.2 },
|
||||
"sugar_water": { elem2:"melted_uranium", tempMin:60, chance:0.3 },
|
||||
"seltzer": { elem2:"coffee", tempMin:70, chance:0.2 },
|
||||
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 }
|
||||
},
|
||||
tempHigh: 130,
|
||||
stateHigh: ["steam","fragrance","molten_uranium",null],
|
||||
tempLow: 0,
|
||||
category:"liquids",
|
||||
state: "liquid",
|
||||
density: 1001.74,
|
||||
stain: 0.01,
|
||||
hidden: true,
|
||||
isFood: true
|
||||
}
|
||||
|
||||
elements.uranium_soda = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
color: "#19ad19",
|
||||
behavior: [
|
||||
"XX|CR:foam%2|XX",
|
||||
"M2|XX|M2",
|
||||
"M2|M1|M2",
|
||||
],
|
||||
tempHigh: 100,
|
||||
stateHigh: ["steam","carbon_dioxide","molten_uranium"],
|
||||
tempLow: -1.11,
|
||||
category: "liquids",
|
||||
reactions: {
|
||||
"dirt": { elem1: null, elem2: "fallout" },
|
||||
"sand": { elem1: null, elem2: "fallout" },
|
||||
"clay_soil": { elem1: null, elem2: "fallout" },
|
||||
"rock": { elem2: "fallout", chance: 0.0004 },
|
||||
"water": { elem1: "uranium", elem2: "uranium" },
|
||||
"salt": { elem2:"foam", chance:0.05 },
|
||||
"salt_water": { elem2:"foam", chance:0.01 },
|
||||
"sugar": { elem2:"foam", chance:0.001 },
|
||||
"candy": { elem2:"foam", chance:0.01 },
|
||||
"caramel": { elem2:"foam", chance:0.01 },
|
||||
"rust": { elem2:"fallout", chance:0.01 },
|
||||
"oxidized_copper": { elem2:"fallout", chance:0.01 },
|
||||
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 }
|
||||
},
|
||||
state: "liquid",
|
||||
density: 1030,
|
||||
isFood: true
|
||||
}
|
||||
|
||||
elements.uranium_juice = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
color: "#84dd84",
|
||||
behavior: behaviors.RADLIQUID,
|
||||
reactions: {
|
||||
"dirt": { elem1: null, elem2: "fallout" },
|
||||
"sand": { elem1: null, elem2: "fallout" },
|
||||
"clay_soil": { elem1: null, elem2: "fallout" },
|
||||
"seltzer": { elem1: "uranium_soda", elem2: "foam" },
|
||||
"carbon_dioxide": { elem1: "uranium_soda", elem2: "foam" },
|
||||
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 }
|
||||
},
|
||||
tempHigh: 160,
|
||||
stateHigh: ["steam","molten_uranium"],
|
||||
tempLow: -10,
|
||||
stateLowColorMultiplier: 1.1,
|
||||
category: "liquids",
|
||||
state: "liquid",
|
||||
density: 1054,
|
||||
stain: 0.05,
|
||||
isFood: true,
|
||||
}
|
||||
|
||||
elements.plutonium_tea = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
viscosity: 1100,
|
||||
tempHigh: 1000,
|
||||
stateHigh: ["fragrance", "null"],
|
||||
color: ["#795508", "#828b09"],
|
||||
behavior: behaviors.RADLIQUID,
|
||||
category: "liquids",
|
||||
state: "liquid",
|
||||
tempLow: 0,
|
||||
stateLow: "plutonium"
|
||||
};
|
||||
// mrapples stuffs
|
||||
elements.plutonium = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
color: ["#38a30e", "#0d662b", "#5d995d"],
|
||||
behavior: behaviors.RADPOWDER,
|
||||
category: "powders",
|
||||
state: "solid",
|
||||
tempHigh: 100,
|
||||
stateHigh: "plutonium_tea"
|
||||
};
|
||||
|
||||
elements.your_dad = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
color: "#000000",
|
||||
behavior: behaviors.WALL,
|
||||
category: "joke",
|
||||
state: "solid",
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
"XX|DL|XX",
|
||||
"XX|XX|XX"
|
||||
],
|
||||
canPlace: false, // exists: false
|
||||
};
|
||||
|
||||
// end of mrapples stuffs
|
||||
|
||||
elements.how_the_fuck_did_you_burn_the_water = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
color: "#18202c",
|
||||
behavior: behaviors.LIQUID,
|
||||
category: "joke",
|
||||
hidden: true,
|
||||
alias: "SANS HOW THE FUCK DID YOU BURN THE WATER?",
|
||||
};
|
||||
|
||||
elements.theres_a_bomb_strapped_to_my_chest = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
color: "#b42020",
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
"XX|EX:15>explosion|XX", // let me finish
|
||||
"XX|XX|XX",
|
||||
],
|
||||
category: "joke",
|
||||
hidden: true,
|
||||
burn: 100,
|
||||
burnTime: 1,
|
||||
burnInto: "explosion",
|
||||
tempHigh: 600,
|
||||
stateHigh: "explosion",
|
||||
state: "solid",
|
||||
density: 1630,
|
||||
excludeRandom: true,
|
||||
alias: "ITS GOING TO EXPLODE IN THREE SECON-",
|
||||
};
|
||||
|
||||
if (!elements.uranium.reactions) elements.uranium.reactions = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
},
|
||||
};
|
||||
elements.uranium.reactions.herbs = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
}, elem1: "uranium_tea", elem2: null, chance: 20 }
|
||||
elements.uranium.reactions.coffee_ground = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
}, elem1: "uranium_coffee", elem2: null, chance: 30 }
|
||||
elements.uranium.reactions.seltzer = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
}, elem2: "uranium_soda", elem2: null, chance: 30 }
|
||||
elements.uranium.reactions.juice = {
|
||||
onSelect: function() {
|
||||
logMessage("Mod made by mrapple, ilikepizza and stefanblox");
|
||||
}, elem1: "uranium_juice", elem2: null, chance: 30 }
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
// 1.3.2 fantasy_elements.js mod
|
||||
// adds plode a bomb
|
||||
|
||||
elements.dragon_breath = {
|
||||
color: "#f94e4e",
|
||||
behavior: behaviors.GAS,
|
||||
|
|
@ -608,3 +611,17 @@ elements.nebulaflare_wall = {
|
|||
"water": { elem1: "nebulaflare", elem2: "nebulaflare" },
|
||||
},
|
||||
};
|
||||
// end, chanelog moves to top
|
||||
|
||||
elements.plode = {
|
||||
color: "#7f03fc",
|
||||
behavior: [
|
||||
"XX|EX:90>plasma,heat_ray,plasma,fire,fire|XX",
|
||||
"XX|XX|XX",
|
||||
"M2|M1 AND EX:90>fire,plasma,fire,fire,heat_ray,fire|M2",
|
||||
],
|
||||
category: "fantasyweapons",
|
||||
state: "solid",
|
||||
density: 2500,
|
||||
excludeRandom: true,
|
||||
};
|
||||
|
|
|
|||
215
mods/sbstuff.js
215
mods/sbstuff.js
|
|
@ -66,7 +66,7 @@ elements.maple_syrup = {
|
|||
tempHigh: 500,
|
||||
stateHigh: "steam",
|
||||
color: "#9c6000",
|
||||
behavior: behaviors.LIQUID,
|
||||
behavior: behaviors.CRAWLER,
|
||||
category: "liquids",
|
||||
state: "liquid",
|
||||
};
|
||||
|
|
@ -362,6 +362,15 @@ elements.coca_cola = {
|
|||
state: "liquid",
|
||||
};
|
||||
|
||||
elements.pepsi = {
|
||||
tempHigh: 500,
|
||||
stateHigh: "steam",
|
||||
color: "#2b1717",
|
||||
behavior: behaviors.LIQUID,
|
||||
category: "liquids",
|
||||
state: "liquid",
|
||||
};
|
||||
|
||||
elements.piss = {
|
||||
tempHigh: 500,
|
||||
stateHigh: "steam",
|
||||
|
|
@ -1409,7 +1418,7 @@ elements.silver_coin = {
|
|||
state: "solid",
|
||||
};
|
||||
|
||||
elements.max_graphics_in_roblox = {
|
||||
elements.uraniumaniumaniumaniumanium_popcornicecream_plutoniumeptunium_238239 = {
|
||||
color: "#238fe8",
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
|
|
@ -1425,7 +1434,199 @@ elements.max_graphics_in_roblox = {
|
|||
excludeRandom: true,
|
||||
maxSize: 1,
|
||||
noMix: true,
|
||||
desc: "ok now ACTUALLY use it at your own risk IM NOT KIDDING! THIS CAN FUCKING CRASH YOUR GAME"
|
||||
desc: "ok now ACTUALLY use it at your own risk IM NOT KIDDING! THIS CAN FUCKING CRASH YOUR GAME",
|
||||
excludeRandom: true,
|
||||
};
|
||||
|
||||
elements.coffee_milk = {
|
||||
tempHigh: 300,
|
||||
stateHigh: "steam",
|
||||
color: "#5c4c42",
|
||||
behavior: behaviors.LIQUID,
|
||||
category: "liquids",
|
||||
state: "liquid",
|
||||
};
|
||||
|
||||
elements.mentos = {
|
||||
tempHigh: 500,
|
||||
stateHigh: "ash",
|
||||
color: "#d0cbd6",
|
||||
behavior: behaviors.STURDYPOWDER,
|
||||
category: "food",
|
||||
state: "liquid"
|
||||
};
|
||||
|
||||
elements.oreo = {
|
||||
tempHigh: 300,
|
||||
stateHigh: "steam",
|
||||
color: ["#211e1e","#fff6f5"],
|
||||
singleColor: true,
|
||||
behavior: behaviors.STURDYPOWDER,
|
||||
category: "food",
|
||||
state: "liquid"
|
||||
};
|
||||
|
||||
elements.uranium_238 = {
|
||||
tempHigh: 1200,
|
||||
stateHigh: "molten_uranium",
|
||||
color: ["#0f400b", "#30522d", "#4d6b4a", "#6f8f6d"],
|
||||
behavior: [
|
||||
"XX|CR:radiation%1|XX",
|
||||
"CR:radiation%1|CH:lead%0.001|CR:radiation%1",
|
||||
"M2|M1|M2",
|
||||
],
|
||||
category: "powders",
|
||||
state: "liquid",
|
||||
density: 19100,
|
||||
hardness: 0.6,
|
||||
conduct: 0.235,
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"neutron": {elem1: "uranium_239",},
|
||||
}
|
||||
};
|
||||
|
||||
elements.uranium_239 = {
|
||||
tempHigh: 1300,
|
||||
stateHigh: "molten_uranium",
|
||||
color: ["#153816", "#135e14", "#379138", "#567556", "#7bb37b"],
|
||||
behavior: [
|
||||
"XX|CR:radiation%2|XX",
|
||||
"CR:radiation%2|CH:lead%0.002|CR:radiation%2",
|
||||
"M2|M1|M2",
|
||||
],
|
||||
category: "powders",
|
||||
state: "liquid",
|
||||
hidden: true,
|
||||
density: 19100,
|
||||
hardness: 0.6,
|
||||
conduct: 0.235,
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"electron": {elem1: "neptunium_239"}
|
||||
}
|
||||
};
|
||||
|
||||
elements.neptunium_239 = {
|
||||
tempHigh: 1500,
|
||||
stateHigh: "molten_uranium",
|
||||
color: ["#082e19", "#173b27", "#354a3f", "#4c635a", "#344a41"],
|
||||
behavior: [
|
||||
"XX|CR:radiation%3|XX",
|
||||
"CR:radiation%3|CH:lead%0.003|CR:radiation%3",
|
||||
"M2|M1|M2",
|
||||
],
|
||||
category: "powders",
|
||||
state: "liquid",
|
||||
hidden: true,
|
||||
density: 20000,
|
||||
hardness: 0.7,
|
||||
conduct: 0.3,
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"electron": {elem1: "plutonium"},
|
||||
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 }
|
||||
}
|
||||
};
|
||||
|
||||
elements.plutonium = {
|
||||
tempHigh: 2000,
|
||||
stateHigh: "molten_uranium",
|
||||
color: ["#0a4a17", "#194d23", "#263b2a", "#475449"],
|
||||
behavior: [
|
||||
"XX|CR:radiation%4|XX",
|
||||
"CR:radiation%4|CH:lead%0.004|CR:radiation%4",
|
||||
"M2|M1|M2",
|
||||
],
|
||||
category: "powders",
|
||||
state: "liquid",
|
||||
hidden: true,
|
||||
density: 22000,
|
||||
hardness: 0.8,
|
||||
conduct: 0.4,
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.2 },
|
||||
"electron": { elem1:"n_explosion", tempMin:500, chance:0.00000000000000000000001 }
|
||||
}
|
||||
};
|
||||
|
||||
elements.electron = {
|
||||
color: "#c99d16",
|
||||
behavior: behaviors.BOUNCY,
|
||||
reactions: {
|
||||
"uranium": { temp2:100 },
|
||||
},
|
||||
temp: 35,
|
||||
category: "energy",
|
||||
state: "gas",
|
||||
density: 0.00002,
|
||||
ignoreAir: true
|
||||
};
|
||||
|
||||
elements.sned = {
|
||||
color: "#dfe0d9",
|
||||
behavior: [
|
||||
"XX|XX AND CR:sned%1|XX",
|
||||
"M2 AND CR:sned%1|XX|M2 AND CR:sned%1",
|
||||
"M1|M1 AND CH:sned%1|M1",
|
||||
],
|
||||
category: "joke",
|
||||
state: "liquid",
|
||||
excludeRandom: true
|
||||
};
|
||||
|
||||
elements.uranium_tea = {
|
||||
temp: 60,
|
||||
tempHigh: 400,
|
||||
stateHigh: "molten_uranium",
|
||||
color: ["#0f8b15", "#316624", "#59864b", "#502e0f"],
|
||||
behavior: behaviors.RADLIQUID,
|
||||
category: "liquids",
|
||||
state: "liquid"
|
||||
};
|
||||
|
||||
elements.powerlaser = {
|
||||
color: ["#ed0ca9","#ff2b95"],
|
||||
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.05) { continue }
|
||||
createPixel("flash", x, y);
|
||||
pixelMap[x][y].color = "#b80ced";
|
||||
pixelMap[x][y].temp = 1001000;
|
||||
}
|
||||
else {
|
||||
if (elements[pixelMap[x][y].element].isGas) { continue }
|
||||
if (elements[pixelMap[x][y].element].id === elements.heat_ray.id) { break }
|
||||
pixelMap[x][y].temp += 901000;
|
||||
pixelTempCheck(pixelMap[x][y]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
deletePixel(pixel.x, pixel.y);
|
||||
},
|
||||
temp: 1000000,
|
||||
category: "energy",
|
||||
state: "gas",
|
||||
excludeRandom: true,
|
||||
noMix: true
|
||||
};
|
||||
|
||||
elements.magma_bomb = {
|
||||
temp: 100,
|
||||
color: "#b83109",
|
||||
behavior: [
|
||||
"XX|EX:6>magma|XX",
|
||||
"XX|XX|XX",
|
||||
"M2|M1 AND EX:6>magma|M2"
|
||||
],
|
||||
category: "weapons",
|
||||
state: "liquid"
|
||||
};
|
||||
|
||||
elements.incinerate.category = "tools",
|
||||
|
|
@ -1463,13 +1664,17 @@ if (!elements.water.reactions) elements.water.reactions = {};
|
|||
elements.water.reactions.cocaine = { elem1: "solid_water", elem2: null }
|
||||
|
||||
if (!elements.paper.reactions) elements.paper.reactions = {};
|
||||
elements.paper.reactions.bless = { elem1: "robux", elem2: null, chance: 0.001 }
|
||||
elements.paper.reactions.bless = { elem1: "robux", elem2: null, chance: 0.0000001 }
|
||||
|
||||
if (!elements.uranium.reactions) elements.uranium.reactions = {};
|
||||
elements.uranium.reactions.ice_cream = {elem1: "uranium_ice_cream", elem2: null},
|
||||
elements.uranium.reactions.cream = {elem1: "uranium_ice_cream", elem2: null}
|
||||
elements.uranium.reactions.cream = {elem1: "uranium_ice_cream", elem2: null},
|
||||
elements.uranium.reactions.tea = {elem1: "uranium_tea", elem2: null}
|
||||
|
||||
if (!elements.dough.reactions) elements.dough.reactions = {};
|
||||
elements.dough.reactions.yolk = {elem1: null, elem2: "spaghetti", tempMin: 25}
|
||||
|
||||
if (!elements.coffee.reactions) elements.coffee.reactions = {};
|
||||
elements.coffee.reactions.milk = {elem1: null, elem2: "coffee_milk",}
|
||||
|
||||
elements.silver.breakInto = "silver_coin"
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ elements.little_boy = {
|
|||
cooldown: defaultCooldown
|
||||
},
|
||||
elements.fat_man = {
|
||||
color: ["#ffff00","#000000"],
|
||||
color: ["#ffff00","#333333"],
|
||||
behavior: [
|
||||
"XX|EX:28>plasma|XX",
|
||||
"XX|XX|XX",
|
||||
|
|
@ -71,18 +71,18 @@ elements.fat_man = {
|
|||
elements.left_missile = {
|
||||
color: "#4c4e42",
|
||||
behavior: [
|
||||
"XX|EX:10|XX",
|
||||
"CR:left_missile AND EX:10|CH:fire|EX:10",
|
||||
"M2|M1 AND EX:10|M2",
|
||||
"M2|EX:10|XX",
|
||||
"M1 AND EX:10|XX|EX:10",
|
||||
"M2|EX:10|XX",
|
||||
],
|
||||
category:"weapons",
|
||||
},
|
||||
elements.right_missile = {
|
||||
color: "#4c4e42",
|
||||
behavior: [
|
||||
"XX|EX:10|XX",
|
||||
"EX:10|CH:fire|EX:10 AND CR:right_missile",
|
||||
"M2|M1 AND EX:10|M2",
|
||||
"XX|EX:10|M2",
|
||||
"EX:10|XX|M1 AND EX:10",
|
||||
"XX|EX:10|M2",
|
||||
],
|
||||
category:"weapons",
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue