242 lines
8.3 KiB
JavaScript
242 lines
8.3 KiB
JavaScript
var modName = "mods/nellfire.js";
|
|
var groundMod = "mods/the_ground.js";
|
|
|
|
if(enabledMods.includes(groundMod)) {
|
|
|
|
function makeRegularRainbow(steps,s,l,outputFormat="rgb") {
|
|
var hslArray = [];
|
|
var divisionSize = 360 / steps;
|
|
for(i = 0; i < 360; i += divisionSize) {
|
|
hslArray.push({h: i, s: s, l: l});
|
|
};
|
|
return hslArray.map(x => convertHslObjects(x,outputFormat));
|
|
};
|
|
|
|
function rainbowSunColor(pixel) {
|
|
var age = pixelTicks - pixel.start;
|
|
var ss, ll;
|
|
if (pixel.temp < 0) { ss = 20; ll = 10; var c=0 }
|
|
else if (pixel.temp < 300) { ss = 20; ll = 15; var c=0 }
|
|
else if (pixel.temp < 500) { ss = 30; ll = 20; var c=0.00003 }
|
|
else if (pixel.temp < 850) { ss = 30; ll = 25; var c=0.0001 }
|
|
else if (pixel.temp < 1300) { ss = 35; ll = 30; var c=0.0004 }
|
|
else if (pixel.temp < 1800) { ss = 40; ll = 35; var c=0.001 }
|
|
else if (pixel.temp < 2100) { ss = 45; ll = 40; var c=0.0025 }
|
|
else if (pixel.temp < 2400) { ss = 50; ll = 45; var c=0.004 }
|
|
else if (pixel.temp < 3200) { ss = 55; ll = 50; var c=0.007 }
|
|
else if (pixel.temp < 3900) { ss = 65; ll = 55; var c=0.01 }
|
|
else if (pixel.temp < 4600) { ss = 70; ll = 60; var c=0.015 }
|
|
else if (pixel.temp < 6100) { ss = 75; ll = 65; var c=0.025 }
|
|
else if (pixel.temp < 7200) { ss = 85; ll = 65; var c=0.035 }
|
|
else if (pixel.temp < 8300) { ss = 95; ll = 70; var c=0.05 }
|
|
else if (pixel.temp < 10400) { ss = 100; ll = 72.5; var c=0.07 }
|
|
else if (pixel.temp < 12500) { ss = 100; ll = 75; var c=0.1 }
|
|
else if (pixel.temp < 15600) { ss = 100; ll = 77.5; var c=0.125 }
|
|
else if (pixel.temp < 18700) { ss = 100; ll = 80; var c=0.15 }
|
|
else if (pixel.temp < 21800) { ss = 100; ll = 85; var c=0.175 }
|
|
else if (pixel.temp < 28900) { ss = 100; ll = 90; var c=0.2 }
|
|
else if (pixel.temp < 36000) { ss = 100; ll = 92.5; var c=0.25 }
|
|
else if (pixel.temp < 45600) { ss = 100; ll = 94; var c=0.3 }
|
|
else if (pixel.temp < 52200) { ss = 100; ll = 96.5; var c=0.4 }
|
|
else if (pixel.temp < 58300) { ss = 100; ll = 98; var c=0.5 }
|
|
else if (pixel.temp < 63400) { ss = 100; ll = 98.5; var c=0.6 }
|
|
else if (pixel.temp < 68500) { ss = 100; ll = 98.5; var c=0.7 }
|
|
else if (pixel.temp < 73600) { ss = 100; ll = 98.5; var c=0.8 }
|
|
else { ss = 100; ll = 98.5; var c=0.9 }
|
|
|
|
var hslJson = {h: (age) % 360, s: ss, l: ll};
|
|
pixel.color = pixelColorPick(pixel,convertHslObjects(hslJson,"hex"));
|
|
|
|
return c;
|
|
};
|
|
|
|
|
|
elements.rainbow_sun = {
|
|
color: ["#ffbdbd", "#f2ffbd", "#bdffd7", "#bdd7ff", "#f2bdff"],
|
|
tick: function(pixel) {
|
|
starLightAndConduction(pixel,rainbowSunColor(pixel),["sun","nellsun","rainbow_sun"])
|
|
},
|
|
reactions: {
|
|
"hydrogen": { "elem2":"helium", "temp1":5 },
|
|
"helium": { "elem2":"carbon_dioxide", "temp1":5, "tempMax":3600 },
|
|
"carbon_dioxide": { "elem2":"neon", "temp1":5, "tempMax":1800 },
|
|
},
|
|
temp: 5700,
|
|
tempLow: -100,
|
|
stateLow: "supernova",
|
|
category: "special",
|
|
state: "gas",
|
|
//density: 1408,
|
|
insulate: true,
|
|
nellfireImmune: true,
|
|
};
|
|
|
|
elements.rainbow_fire = {
|
|
color: [
|
|
{h: 330, s: 100, l: 56},
|
|
{h: 0, s: 100, l: 59},
|
|
{h: 22, s: 100, l: 58},
|
|
{h: 42, s: 100, l: 57},
|
|
{h: 60, s: 100, l: 55},
|
|
{h: 73, s: 100, l: 49},
|
|
{h: 120, s: 100, l: 49.5},
|
|
{h: 159, s: 100, l: 52},
|
|
{h: 159, s: 100, l: 52},
|
|
{h: 180, s: 100, l: 49.5},
|
|
{h: 197, s: 100, l: 59},
|
|
{h: 240, s: 100, l: 58.5},
|
|
{h: 280, s: 94, l: 53},
|
|
{h: 307, s: 100, l: 55}
|
|
].map(x => convertHslObjects(x,"hex")),
|
|
behavior: behaviors.UL_UR,
|
|
reactions: {
|
|
"fire": { "elem1": "rainbow_fire" },
|
|
"water": { "elem1": "color_smoke" },
|
|
"steam": { "elem1": "color_smoke" },
|
|
"carbon_dioxide": { "elem1": "color_smoke" },
|
|
"dirty_water": { "elem1": "color_smoke" },
|
|
"salt_water": { "elem1": "color_smoke" },
|
|
"sugar_water": { "elem1": "color_smoke" },
|
|
},
|
|
nellfireImmune: true,
|
|
fireSpawnChance: 0,
|
|
temp:610,
|
|
tempLow:102,
|
|
stateLow: "color_smoke",
|
|
tempHigh: 7000,
|
|
stateHigh: "plasma",
|
|
category: "energy",
|
|
burning: true,
|
|
burnTime: 44,
|
|
burnInto: "color_smoke",
|
|
state: "gas",
|
|
density: 0.21,
|
|
ignoreAir: true,
|
|
noMix: true,
|
|
};
|
|
|
|
elements.color_smoke.tempHigh = 610;
|
|
elements.color_smoke.stateHigh = "rainbow_fire";
|
|
|
|
elements.rainbow_glass = {
|
|
color: makeRegularRainbow(12,100,70,"hex"),
|
|
behavior: behaviors.WALL,
|
|
tempHigh: 1765,
|
|
category: "solids",
|
|
state: "solid",
|
|
density: 2711,
|
|
breakInto: "rainbow_glass_shard",
|
|
noMix: true,
|
|
nellfireImmune: true,
|
|
};
|
|
|
|
elements.rainbow_glass_shard = {
|
|
color: makeRegularRainbow(18,70,65,"hex"),
|
|
behavior: behaviors.POWDER,
|
|
tempHigh: 1784,
|
|
stateHigh: "molten_rainbow_glass",
|
|
category: "powders",
|
|
state: "solid",
|
|
density: 2213,
|
|
nellfireImmune: true,
|
|
};
|
|
|
|
elements.rainbow_sand = {
|
|
color: makeRegularRainbow(7,100,94,"hex").concat("#fbfbfb"),
|
|
behavior: behaviors.POWDER,
|
|
tempHigh: 1731,
|
|
stateHigh: "molten_rainbow_glass",
|
|
category: "land",
|
|
state: "solid",
|
|
density: 1733,
|
|
_data: ["rainbow_sand_material","rainbow_sand_material","particulate"],
|
|
nellfireImmune: true,
|
|
};
|
|
|
|
runAfterLoad(function() {
|
|
elements.water.reactions.rainbow_sand = { elem1: null, elem2: "wet_rainbow_sand" };
|
|
elements.water.reactions.wet_rainbow_sand = { "elem1": "rainbow_sand_water", "elem2": [ "rainbow_sand", "rainbow_sand", "rainbow_sand", "rainbow_sand_water" ], "chance": 0.01 };
|
|
});
|
|
|
|
elements.wet_rainbow_sand = {
|
|
color: makeRegularRainbow(7,100,84,"hex").concat("#e0e0e0"),
|
|
behavior: behaviors.STURDYPOWDER,
|
|
category: "land",
|
|
reactions: {
|
|
"dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
|
|
},
|
|
state: "solid",
|
|
tempHigh: 100,
|
|
stateHigh: "packed_rainbow_sand",
|
|
tempLow: -50,
|
|
stateLow:"packed_rainbow_sand",
|
|
density: 1733 * 0.595 + 150,
|
|
_data: ["rainbow_sand_material","rainbow_sand_material","wet_particulate"],
|
|
nellfireImmune: true,
|
|
};
|
|
|
|
elements.packed_rainbow_sand = {
|
|
color: makeRegularRainbow(7,70,86,"hex").concat("#dbdbdb"),
|
|
behavior: behaviors.SUPPORT,
|
|
category: "land",
|
|
state: "solid",
|
|
tempHigh: 1731,
|
|
stateHigh: "rainbow_glass",
|
|
density: 1733 * 0.59,
|
|
breakInto: "rainbow_sand",
|
|
_data: ["rainbow_sand_material","rainbow_sand_material","packed_particulate"],
|
|
nellfireImmune: true,
|
|
};
|
|
|
|
makeNonSandSedimentationElements("rainbow_sand","rainbow_sand_water","rainbow_sandstone");
|
|
|
|
elements.rainbow_sandstone.color = makeRegularRainbow(14,90,71,"hex").concat("#b5b5b5");
|
|
|
|
var immunes = ["rainbow_sand_water", "rainbow_sand_sediment", "rainbow_sandstone", "phirite", "solid_phirite", "phirite_gravel", "aphirite", "solid_aphirite", "phirite_sand", "wet_phirite_sand", "packed_phirite_sand", "aphirite_gravel", "aphirite_sand", "wet_aphirite_sand", "packed_aphirite_sand", "vesirite", "solid_vesirite", "vesirite_gravel", "vesirite_sand", "wet_vesirite_sand", "packed_vesirite_sand", "vitirite", "solid_vitirite", "vitirite_shard", "vitirite_sand", "wet_vitirite_sand", "packed_vitirite_sand", "rainbow_magma", "vaporized_rainbow_magma", "rainbow_magma_cloud", "phirite_sandy_water", "phirite_sand_sediment", "phirite_sandstone", "aphirite_sandy_water", "aphirite_sand_sediment", "aphirite_sandstone", "vesirite_sandy_water", "vesirite_sand_sediment", "vesirite_sandstone", "vitirite_sandy_water", "vitirite_sand_sediment", "vitirite_sandstone", "phirite_dust", "aphirite_dust", "vesirite_dust", "vitirite_dust" ];
|
|
|
|
runAfterLoad(function() {
|
|
for(i = 0; i < immunes.length; i++) {
|
|
if(!elements[immunes[i]]) {
|
|
console.error(immunes[i]);
|
|
continue;
|
|
}
|
|
elements[immunes[i]].nellfireImmune = true;
|
|
};
|
|
});
|
|
|
|
newIgneousCompositionFamily(
|
|
"rainbow",
|
|
133487,
|
|
5512,
|
|
-71,
|
|
-17,
|
|
4555,
|
|
|
|
"phirite",
|
|
makeRegularRainbow(6,70,45,"hex"),
|
|
1671,
|
|
4004,
|
|
|
|
"aphirite",
|
|
makeRegularRainbow(24,63,75,"hex").concat("#bfbfbf"),
|
|
1685,
|
|
3951,
|
|
|
|
"vesirite",
|
|
makeRegularRainbow(13,55,80,"hex").concat(makeRegularRainbow(13,45,50,"hex")),
|
|
1712,
|
|
2918,
|
|
|
|
"vitirite",
|
|
makeRegularRainbow(30,70,35,"hex").concat("#595959"),
|
|
2054,
|
|
3741,
|
|
|
|
3,7
|
|
);
|
|
} else {
|
|
enabledMods.splice(enabledMods.indexOf(modName),0,groundMod);
|
|
localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
|
|
alert(`The ${groundMod} mod is required and has been automatically inserted (reload for this to take effect).`);
|
|
};
|