diff --git a/mods/nellfire.js b/mods/nellfire.js deleted file mode 100644 index 42b2821b..00000000 --- a/mods/nellfire.js +++ /dev/null @@ -1,741 +0,0 @@ -var modName = "mods/nellfire.js"; -var groundMod = "mods/the_ground.js"; -var libHookTickMod = "mods/libhooktick.js"; - -if(enabledMods.includes(groundMod) && enabledMods.includes(libHookTickMod)) { - function nellsunColor(pixel) { - if (pixel.temp < 0) { pixel.color = pixelColorPick(pixel,"#615e5e"); var c=0 } - else if (pixel.temp < 300) { pixel.color = pixelColorPick(pixel,"#664962"); var c=0 } - else if (pixel.temp < 500) { pixel.color = pixelColorPick(pixel,"#714487"); var c=0.00004 } - else if (pixel.temp < 850) { pixel.color = pixelColorPick(pixel,"#6a43bf"); var c=0.00015 } - else if (pixel.temp < 1300) { pixel.color = pixelColorPick(pixel,"#c356db"); var c=0.0005 } - else if (pixel.temp < 1800) { pixel.color = pixelColorPick(pixel,"#f04ac4"); var c=0.0015 } - else if (pixel.temp < 2100) { pixel.color = pixelColorPick(pixel,"#f788c5"); var c=0.004 } - else if (pixel.temp < 2400) { pixel.color = pixelColorPick(pixel,"#f7a3b8"); var c=0.007 } - else if (pixel.temp < 3200) { pixel.color = pixelColorPick(pixel,"#ffd1d9"); var c=0.01 } - else if (pixel.temp < 3900) { pixel.color = pixelColorPick(pixel,"#fce1e1"); var c=0.02 } - else if (pixel.temp < 4600) { pixel.color = pixelColorPick(pixel,"#fff5f5"); var c=0.035 } - else if (pixel.temp < 6100) { pixel.color = pixelColorPick(pixel,"#ffffff"); var c=0.05 } - else if (pixel.temp < 7200) { pixel.color = pixelColorPick(pixel,"#f4fad9"); var c=0.075 } //new in-between state because the transition is too jarring - else if (pixel.temp < 8300) { pixel.color = pixelColorPick(pixel,"#e4f2c2"); var c=0.1 } //most of these are not real because of the kid named Planckian locus, but it makes it more fun - else if (pixel.temp < 10400) { pixel.color = pixelColorPick(pixel,"#c6f2a2"); var c=0.125 } - else if (pixel.temp < 12500) { pixel.color = pixelColorPick(pixel,"#90f277"); var c=0.15 } - else if (pixel.temp < 15600) { pixel.color = pixelColorPick(pixel,"#75f754"); var c=0.175 } - else if (pixel.temp < 18700) { pixel.color = pixelColorPick(pixel,"#5aff30"); var c=0.2 } - else if (pixel.temp < 21800) { pixel.color = pixelColorPick(pixel,"#1df54f"); var c=0.25 } - else if (pixel.temp < 28900) { pixel.color = pixelColorPick(pixel,"#3ce873"); var c=0.3 } - else if (pixel.temp < 36000) { pixel.color = pixelColorPick(pixel,"#4fdb90"); var c=0.35 } - else if (pixel.temp < 45600) { pixel.color = pixelColorPick(pixel,"#5dcfa7"); var c=0.4 } - else if (pixel.temp < 52200) { pixel.color = pixelColorPick(pixel,"#4fe3af"); var c=0.45 } - else if (pixel.temp < 58300) { pixel.color = pixelColorPick(pixel,"#3cfad4"); var c=0.5 } - else if (pixel.temp < 63400) { pixel.color = pixelColorPick(pixel,"#26f8ff"); var c=0.6 } - else if (pixel.temp < 68500) { pixel.color = pixelColorPick(pixel,"#19d9ff"); var c=0.7 } - else if (pixel.temp < 73600) { pixel.color = pixelColorPick(pixel,"#08b1ff"); var c=0.8 } - else { pixel.color = pixelColorPick(pixel,"#0099ff"); var c=0.9 } - return c; - }; - - function nellSLAC(pixel,c,whitelist=["sun","nellsun"]) { - for (var i = 0; i < adjacentCoords.length; i++) { - var x = pixel.x+adjacentCoords[i][0]; - var y = pixel.y+adjacentCoords[i][1]; - if (isEmpty(x,y)) { - if (Math.random() <= c) { - createPixel("light", x, y); - pixelMap[x][y].color = pixel.color; - }; - } else if (!outOfBounds(x,y)) { - var newPixel = pixelMap[x][y]; - //console.log(whitelist,newPixel.element,whitelist.includes(newPixel.element)); - if (pixel.temp!==newPixel.temp && whitelist.includes(newPixel.element)) { - var avg = (pixel.temp + newPixel.temp)/2; - pixel.temp = avg; - newPixel.temp = avg; - pixelTempCheck(pixel); - pixelTempCheck(newPixel); - } - } - } - }; - - elements.nellsun = { - color: ["#ff26ac", "#ffb8e4", "#ffffff", "#b7ffa8", "#2df7b4"], - tick: function(pixel) { - nellSLAC(pixel,nellsunColor(pixel)); - }, - reactions: { - "hydrogen": { "elem2":"helium", "temp1":5 }, - "helium": { "elem2":"carbon_dioxide", "temp1":5, "tempMax":3600 }, - "carbon_dioxide": { "elem2":"neon", "temp1":5, "tempMax":1800 }, - }, - temp: 5504, - tempLow: -100, - stateLow: "supernova", - category: "special", - state: "gas", - //density: 1408, - insulate: true, - nellfireImmune: true, - }; - - elements.nellfire = { - color: ["#ff8929","#ffb429","#ffde0a"], - behavior: [ - "M1|M1|M1", - "M1%10 AND M2|HT%2|M1%10 AND M2", - "XX|M2|XX" - ], - reactions: { - "fire": { "elem2": "nellfire" }, - /*"water": { "elem1": "smoke" }, - "steam": { "elem1": "smoke" }, - "carbon_dioxide": { "elem1": "smoke" }, - "dirty_water": { "elem1": "smoke" }, - "salt_water": { "elem1": "smoke" }, - "sugar_water": { "elem1": "smoke" },*/ - }, - tick: function(pixel) { - if(pixel.burning) { - delete pixel.burning; - delete pixel.burnStart; - pixel.nellburn = true; - pixel.nellburnStart ??= pixelTicks; - }; - }, - nellBurningWhenConverted: true, - temp:900, - nellFireSpawnChance: 0, - //tempLow:200, - //stateLow: "smoke", - category: "energy", - burning: true, - nellburnTime: 50, - nellburnInto: null, - state: "gas", - density: 0.06, - ignoreAir: true, - noMix: true, - desc: "Researchers first came into this place and thought it was Hell— it wasn't, so they renamed it Nell (Not Hell). They still named the materials in it hell references, though.", - }, - - elements.nellglass = { - color: ["#a161b0", "#b06177", "#b59159"], - behavior: behaviors.WALL, - tempHigh: 1765, - category: "solids", - state: "solid", - density: 5012, - breakInto: "nellglass_shard", - noMix: true, - nellfireImmune: true, - }; - - elements.dantite = { - color: ["#5effba", "#85edd1", "#62d9c7", "#3efa9c", "#21b9db"], - tempHigh: 2000, - behavior: behaviors.POWDER, - category: "powders", - state: "solid", - density: 1442, - hardness: 0.47, - nellfireImmune: "torch", - }; - - elements.molten_dantite = { - color: ["#5eff6b", "#70faaa", "#31e08b", "#a1f051"], - density: 4012, - hardness: 0.84, - nellfireImmune: "torch", - }; - - elements.limtupyte = { //λίμνη τοῦ πυρός - color: ["#212121", "#212121", "#40221f", "#611d14"], - behavior: behaviors.WALL, - category: "solids", - state: "solid", - density: 8012, - hardness: 0.87, - nellfireImmune: true, - tempHigh: 9011, - stateHigh: "alpha_limtupyte", - }; - - elements.alpha_limtupyte = { - name: "α-limtupyte", - color: ["#6e1414", "#8f210b", "#a34910", "#c27115"], - density: 10112, - behavior: behaviors.MOLTEN, - category: "molten", - hidden: true, - state: "liquid", - hardness: 0.91, - nellfireImmune: true, - temp: 9500, - tempHigh: 11022, - stateHigh: "beta_limtupyte", - tempLow: 9011, - stateLow: "limtupyte", - }; - - elements.beta_limtupyte = { - name: "β-limtupyte", - color: ["#e68917", "#ffbd24", "#ffe940", "#ffff61"], - density: 13178, - behavior: behaviors.MOLTEN, - category: "molten", - hidden: true, - state: "liquid", - hardness: 0.93, - nellfireImmune: true, - temp: 12000, - tempHigh: 14316, - stateHigh: "limtupyte_gas", - tempLow: 11022, - stateLow: "alpha_limtupyte", - }; - - elements.limtupyte_gas = { - color: ["#ffff80", "#ffe940", "#feffd1", "#ffffff"], - density: 17.12, - behavior: behaviors.GAS, - category: "states", - hidden: true, - state: "gas", - hardness: 1, - nellfireImmune: true, - temp: 15000, - tempLow: 14316, - stateLow: "beta_limtupyte", - }; - - elements.nellglass_shard = { - color: ["#7d5f8c","#875966","#9e7b47"], - behavior: behaviors.POWDER, - tempHigh: 1765, - stateHigh: "molten_nellglass", - category: "powders", - state: "solid", - density: 4212, - nellfireImmune: true, - }; - - elements.nellsand = { - color: ["#906fa8", "#80747a", "#b08464"], - behavior: behaviors.POWDER, - tempHigh: 1911, - stateHigh: "molten_nellglass", - category: "land", - state: "solid", - density: 3742, - _data: ["nellsand_material","nellsand_material","particulate"], - nellfireImmune: true, - }; - - runAfterLoad(function() { - elements.water.reactions.nellsand = { elem1: null, elem2: "wet_nellsand" }; - elements.water.reactions.wet_nellsand = { "elem1": "nellsand_water", "elem2": [ "nellsand", "nellsand", "nellsand", "nellsand_water" ], "chance": 0.01 }; - }); - - elements.wet_nellsand = { - color: sandizeToHex("nellsand","w"), - behavior: behaviors.STURDYPOWDER, - category: "land", - reactions: { - "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true }, - }, - state: "solid", - tempHigh: 100, - stateHigh: "packed_nellsand", - tempLow: -50, - stateLow:"packed_nellsand", - density: 3742 * 0.595 + 150, - _data: ["nellsand_material","nellsand_material","wet_particulate"], - nellfireImmune: true, - }; - - elements.packed_nellsand = { - color: sandizeToHex("nellsand","p"), - behavior: behaviors.SUPPORT, - category: "land", - state: "solid", - tempHigh: 1911, - stateHigh: "nellglass", - density: 3742 * 0.59, - breakInto: "nellsand", - _data: ["nellsand_material","nellsand_material","packed_particulate"], - nellfireImmune: true, - }; - - makeNonSandSedimentationElements("nellsand","nellsand_water","nellsandstone"); - - nellburnObject = { - "dirt": "nellsand", - "dry_dirt": "nellsand", - "mud": "wet_nellsand", - "mudstone": "packed_nellsand", - "brass": ["nell_ash","zinc"], - "thermite": ["nell_ash","zinc"], - "rose_gold": ["nell_ash","gold"], - "electrum": ["nell_ash","gold"], - "molten_brass": ["nell_ash","molten_zinc"], - "molten_thermite": ["nell_ash","molten_zinc"], - "molten_rose_gold": ["nell_ash","molten_gold"], - "molten_electrum": ["nell_ash","molten_gold"], - "sun": "nellsun", - }; - - var otherImmunes = ["fire","smoke","plasma","cold_fire","radiation","light","proton","neutron","electron","positron","antimatter","cold_smoke","rad_fire","rad_smoke","laser","liquid_fire","liquid_smoke","liquid_plasma","liquid_cold_fire","liquid_cold_smoke","liquid_rad_fire","liquid_rad_fire","liquid_rad_smoke","le_liquid_light","liquid_laser","pure_ice","pure_water","pure_steam","magic","gold","zinc","molten_gold","molten_zinc","pyreite","infernium","molten_pyreite","molten_infernium","infernyrite","molten_infernyrite","infernyreitheum","molten_infernyreitheum","pyrinfernyreitheum","molten_pyrinfernyreitheum","stellar_plasma","liquid_stellar_plasma","hydrogen","liquid_hydrogen","hydrogen_ice","neutronium","molten_neutronium","liquid_neutronium","neutronium_gas","liquid_degenerate_neutronium","gaseous_degenerate_neutronium"].concat(["water","ice","slush","snow","packed_snow","steam", "heavy_steam","heavy_water","heavy_ice","heavy_snow", "hydrogen_ice","liquid_hydrogen","hydrogen","ionized_hydrogen", "liquid_helium","helium","ionized_helium", "tralphium","liquid_tralphium","ionized_tralphium", "carbon","charcoal","diamond","molten_carbon", "carbon_monoxide","liquid_carbon_monoxide","carbon_monoxide_ice", "carbon_dioxide","dry_ice","seltzer","seltzer_ice","foam"]); - - for(let i = 0; i < otherImmunes.length; i++) { - var element = otherImmunes[i]; - if(elements[element]) { elements[element].nellfireImmune = true }; - }; - - runAfterLoad(function() { - var rockdataElements = Object.keys(elements).filter(function(name) { - return ( - elements[name]._data && - !["blackened_carbonate","nellish","nellsand_material"].includes(elements[name]._data[0]) - ) - }); - - for(i = 0; i < rockdataElements.length; i++) { - name = rockdataElements[i]; - var info = elements[name]; - switch(info._data[1]) { - case "phanerite": - switch(info._data[2]) { - case "igneous_rock": - nellburnObject[name] = "gehennite" - break; - case "solid_igneous_rock": - nellburnObject[name] = "solid_gehennite" - break; - case "igneous_gravel": - nellburnObject[name] = "gehennite_gravel" - break; - case "particulate": - nellburnObject[name] = "gehennite_sand" - break; - case "dust": - nellburnObject[name] = "gehennite_dust" - break; - case "wet_particulate": - nellburnObject[name] = "wet_gehennite_sand" - break; - case "packed_particulate": - nellburnObject[name] = "packed_gehennite_sand" - break; - case "sediment": - nellburnObject[name] = "gehennite_sand_sediment" - break; - case "suspension": - nellburnObject[name] = "gehennite_sandy_water" - break; - }; - break; - case "aphanite": - //console.log(info._data[2]); - switch(info._data[2]) { - case "igneous_rock": - nellburnObject[name] = "nellrock" - break; - case "solid_igneous_rock": - nellburnObject[name] = "solid_nellrock" - break; - case "igneous_gravel": - nellburnObject[name] = "nellrock_gravel" - break; - case "particulate": - nellburnObject[name] = "nellrock_sand" - break; - case "dust": - nellburnObject[name] = "nellrock_dust" - break; - case "wet_particulate": - nellburnObject[name] = "wet_nellrock_sand" - break; - case "packed_particulate": - nellburnObject[name] = "packed_nellrock_sand" - break; - case "sediment": - nellburnObject[name] = "nellrock_sand_sediment" - break; - case "suspension": - nellburnObject[name] = "nellrock_sandy_water" - break; - }; - break; - case "vesiculite": - //console.log(info._data[2]); - switch(info._data[2]) { - case "igneous_rock": - nellburnObject[name] = "hadean_sponge" - break; - case "solid_igneous_rock": - nellburnObject[name] = "solid_hadean_sponge" - break; - case "igneous_gravel": - nellburnObject[name] = "hadean_sponge_gravel" - break; - case "particulate": - nellburnObject[name] = "hadean_sponge_sand" - break; - case "dust": - nellburnObject[name] = "hadean_sponge_dust" - break; - case "wet_particulate": - nellburnObject[name] = "wet_hadean_sponge_sand" - break; - case "packed_particulate": - nellburnObject[name] = "packed_hadean_sponge_sand" - break; - case "sediment": - nellburnObject[name] = "hadean_sponge_sand_sediment" - break; - case "suspension": - nellburnObject[name] = "hadean_sponge_sandy_water" - break; - }; - break; - case "vitrite": - //console.log(info._data[2]); - switch(info._data[2]) { - case "igneous_rock": - nellburnObject[name] = "gehidian" - break; - case "solid_igneous_rock": - nellburnObject[name] = "solid_gehidian" - break; - case "igneous_gravel": - nellburnObject[name] = "gehidian_gravel" - break; - case "particulate": - nellburnObject[name] = "gehidian_sand" - break; - case "dust": - nellburnObject[name] = "gehidian_dust" - break; - case "wet_particulate": - nellburnObject[name] = "wet_gehidian_sand" - break; - case "packed_particulate": - nellburnObject[name] = "packed_gehidian_sand" - break; - case "sediment": - nellburnObject[name] = "gehidian_sand_sediment" - break; - case "suspension": - nellburnObject[name] = "gehidian_sandy_water" - break; - }; - break; - case "phanerite_sandstone": - nellburnObject[name] = "gehennite_sandstone" - break; - case "aphanite_sandstone": - nellburnObject[name] = "nellrock_sandstone" - break; - case "vesiculite_sandstone": - nellburnObject[name] = "hadean_sponge_sandstone" - break; - case "vitrite_sandstone": - nellburnObject[name] = "gehidian_sandstone" - break; - case "silica_sandstone": - nellburnObject[name] = "nellsandstone" - break; - case "magma": - switch(info._data[2]) { - case "liquid": - nellburnObject[name] = "nellish_magma" - break; - case "vaporized": - nellburnObject[name] = "vaporized_nellish_magma" - break; - case "cloud": - nellburnObject[name] = "nellish_magma_cloud" - break; - }; - break; - case "rock": - switch(name) { - case "shale": - nellburnObject[name] = "nellsandstone" - break; - case "limestone": - nellburnObject[name] = "black_limestone" - break; - }; - break; - case "calcium": - switch(info._data[2]) { - case "particulate": - case "mineral": - nellburnObject[name] = bccd - break; - case "sediment": - nellburnObject[name] = "blackened_calcium_carbonate_dust_sediment" - break; - case "suspension": - nellburnObject[name] = bccs - break; - }; - break; - case "silica": - switch(info._data[2]) { - case "particulate": - nellburnObject[name] = "nellsand" - break; - case "wet_particulate": - nellburnObject[name] = "wet_nellsand" - break; - case "packed_particulate": - nellburnObject[name] = "packed_nellsand" - break; - case "suspension": - nellburnObject[name] = "nellsand_water" - break; - case "sediment": - nellburnObject[name] = "nellsand_sediment" - break; - }; - break; - case "clay": - switch(info._data[2]) { - case "particulate": - nellburnObject[name] = "nellsand" - break; - case "suspension": - nellburnObject[name] = "nellsand_water" - break; - case "sediment": - nellburnObject[name] = "nellsand_sediment" - break; - }; - break; - default: - console.log(name,info._data); - }; - }; - - nellfireSpawnBlacklist = ["nellfire"]; - }); - - elements.nell_ash = { - color: ["#ab9393","#947873"], - behavior: behaviors.POWDER, - /*reactions: { - "steam": { "elem1": "pyrocumulus", "chance":0.08, "y":[0,12], "setting":"clouds" }, - "rain_cloud": { "elem1": "pyrocumulus", "chance":0.08, "y":[0,12], "setting":"clouds" }, - "cloud": { "elem1": "pyrocumulus", "chance":0.08, "y":[0,12], "setting":"clouds" }, - "snow_cloud": { "elem1": "pyrocumulus", "chance":0.08, "y":[0,12], "setting":"clouds" }, - "hail_cloud": { "elem1": "pyrocumulus", "chance":0.08, "y":[0,12], "setting":"clouds" }, - "acid_cloud": { "elem1": "pyrocumulus", "chance":0.05, "y":[0,12], "setting":"clouds" }, - "pyrocumulus": { "elem1": "pyrocumulus", "chance":0.08, "y":[0,12], "setting":"clouds" }, - "stench": { "elem2":null, "chance":0.1 } - },*/ - category:"powders", - state: "solid", - nellfireImmune: true, - tick: function(pixel) { - if(Math.random() < 0.01 && pixel.temp < 25) { - pixel.temp++; - }; - }, - density: 810, - //tempHigh: 2000, - //forceAutoGen: true, - //stateHigh: ["molten_ash","smoke","smoke","smoke"] - }; - - elements.wall.nellfireImmune = true; - - /* - info.nellfireImmune - info.nellburnTempChange - info.nellFireElement - info.nellFireSpawnTemp - info.nellFireSpawnChance - info.nellburn - info.nellburnInto - info.nellFireColor - */ - - function doNellfire(pixel) { - var info = elements[pixel.element]; - if((info.nellfireImmune && info.nellfireImmune !== "torch") && pixel.nellburn) { - delete pixel.nellburn; - delete pixel.nellburnStart; - return; - }; - if (pixel.nellburn) { // Burning - pixel.nellburnStart ??= pixelTicks; - var nellburnTempChange = info.nellburnTempChange ?? 1; - var fire = info.nellFireElement === undefined ? "nellfire" : info.nellFireElement; //allow null but disallow undefined - //console.log(info.nellFireElement,fire); - while(fire instanceof Array) { - fire = fire[Math.floor(Math.random()*fire.length)]; - }; - var nellFireTemp = info.nellFireSpawnTemp ?? pixel.temp; - var nellFireChance = info.nellFireSpawnChance ?? 20; - - pixel.temp += nellburnTempChange ?? 4; - pixelTempCheck(pixel); - - for (var i = 0; i < adjacentCoords.length; i++) { // Burn adjacent pixels - var x = pixel.x+adjacentCoords[i][0]; - var y = pixel.y+adjacentCoords[i][1]; - if (!isEmpty(x,y,true)) { - var newPixel = pixelMap[x][y]; - var newInfo = elements[newPixel.element]; - var spreadChance = newInfo.nellburn ?? 15 - if (spreadChance && !newPixel.nellburn) { - if (Math.floor(Math.random()*100) < spreadChance) { - newPixel.nellburn = true; - newPixel.nellburnStart = pixelTicks; - } - } - } - } - - if (info.nellfireImmune !== "torch" && (pixelTicks - pixel.nellburnStart > (info.nellburnTime || 150)) && Math.floor(Math.random()*100)<(info.nellburn || 25)) { - var burnInto = info.nellburnInto; - //console.log(burnInto); - if(burnInto === undefined) { burnInto = nellburnObject[pixel.element] }; - //console.log(burnInto); - if(burnInto === undefined) { burnInto = [null,"nell_ash"] }; - //console.log(burnInto); - while(burnInto instanceof Array) { - burnInto = burnInto[Math.floor(Math.random()*burnInto.length)]; - }; - //console.log(burnInto); - if(burnInto == null) { deletePixel(pixel.x,pixel.y); return } else { changePixel(pixel,burnInto,burnInto !== "smoke") }; - if(!elements[burnInto].nellBurningWhenConverted) { - delete pixel.nellburn; - delete pixel.nellburnStart; - }; - //console.log("ass"); - pixel.temp = nellFireTemp; - if (info.nellFireColor != undefined && burnInto == "nellfire") { - pixel.color = pixelColorPick(pixel,info.nellFireColor); - } - else { - pixel.color = pixelColorPick(pixel) - } - } - else if (Math.floor(Math.random()*100)