2022-08-31 12:39:11 -04:00
//TNT world
2022-08-30 20:46:15 -04:00
elements . oil _cloud = {
color : "#8c4331" ,
behavior : [
"XX|XX|XX" ,
"XX|CH:oil%0.05|M1%2.5 AND BO" ,
"XX|XX|XX" ,
] ,
category : "gases" ,
temp : 30 ,
state : "gas" ,
density : 0.5 ,
burn : 60 ,
burnTime : 15 ,
burnInto : "explosion" , //atomization moment
ignoreAir : true ,
stain : 0.02 ,
} ;
elements . oil _cloud _floater = {
color : "#8c4331" ,
behavior : [
"M2|M1|M2" ,
"M1%80|CH:oil_cloud%0.2|M1%80" ,
"M%60|XX|M2%60" ,
] ,
reactions : {
"oil_cloud_floater" : { elem1 : "oil_cloud" , elem2 : "oil_cloud" , chance : 0.003 } ,
"oil_cloud" : { elem1 : "oil_cloud" , elem2 : "oil_cloud" , chance : 0.01 }
} ,
category : "gases" ,
temp : 30 , //otherwise identical
state : "gas" ,
density : 0.5 ,
burn : 60 ,
burnTime : 15 ,
burnInto : "explosion" , //atomization moment
stain : 0.02 ,
} ;
worldgentypes . tnt _world = {
name : "TNT World" , //unimplemented
layers : [
[ 0.9 , "oil_cloud_floater" ] ,
[ 0.65 , "coal" , 0.1 ] ,
[ 0.65 , "nitroglycerin" ] ,
[ 0.55 , "nitroglycerin" , 0.5 ] ,
[ 0.2 , "coal" , 0.2 ] ,
[ 0.2 , "tnt" ] ,
[ 0.05 , "coal" , 0.3 ] ,
[ 0.05 , "c4" ] ,
2022-08-31 12:39:11 -04:00
[ 0.0 , "coal" , 0.4 ] ,
[ 0.0 , "lamp_oil" ]
2022-08-30 20:46:15 -04:00
]
2022-08-31 12:39:11 -04:00
} ;
runAfterLoad ( function ( ) {
if ( enabledMods . includes ( "mods/glenn_gases.js" ) ) {
worldgentypes . tnt _world . layers . unshift ( [ 0.9 , "red_gas" , 0.50 ] )
} ;
} ) ;
//Ice world
elements . snow _cloud _floater = {
color : "#7e8691" ,
behavior : [
"M2|M1|M2" ,
"M1%80|CH:snow_cloud%0.2|M1%80" ,
"M%60|XX|M2%60" ,
] ,
reactions : {
"snow_cloud_floater" : { elem1 : "snow_cloud" , elem2 : "snow_cloud" , chance : 0.003 } ,
"snow_cloud" : { elem1 : "snow_cloud" , elem2 : "snow_cloud" , chance : 0.01 }
} ,
category : "gases" ,
temp : - 10 ,
tempHigh : 30 ,
stateHigh : "rain_cloud" ,
tempLow : - 200 ,
stateLow : "hail_cloud" ,
state : "gas" ,
density : 0.55 ,
conduct : 0.01 ,
movable : true ,
isGas : true
} ;
worldgentypes . ice = {
layers : [
//[0.95, "snow_cloud_floater"], //le cutting room floor has arrived
[ 0.9 , "snow" ] ,
[ 0.65 , "ice" ] ,
[ 0.6 , "gravel" ] ,
[ 0.35 , "permafrost" ] ,
[ 0 , "rock" ]
] ,
temperature : - 20
} ;
//Nuclear wasteland
behaviors . RAD _POWDER = [
"XX|CR:radiation%2|XX" ,
"CR:radiation%2|XX|CR:radiation%2" ,
"M2|M1 AND CR:radiation%2|M2" ,
] ,
behaviors . RAD _STURDYPOWDER = [
"XX|CR:radiation%2|XX" ,
"CR:radiation%2|XX|CR:radiation%2" ,
"XX|M1 AND CR:radiation%2|XX" ,
] ,
behaviors . RAD _SUPPORT = [
"CR:radiation%1|CR:radiation%2|CR:radiation%1" ,
"SP AND CR:radiation%2|XX|SP AND CR:radiation%2" ,
"XX|M1 AND CR:radiation%2|XX" ,
] ,
behaviors . RAD _SUPPORTPOWDER = [
"CR:radiation%1|CR:radiation%2|CR:radiation%1" ,
"SP AND CR:radiation%2|XX|SP AND CR:radiation%2" ,
"M2|M1 AND CR:radiation%2|M2" ,
] ,
behaviors . RAD _LIQUID = [
"XX|CR:radiation%2|XX" ,
"M2 AND CR:radiation%2|XX|M2 AND CR:radiation%2" ,
"M1|M1 AND CR:radiation%2|M1" ,
] ,
behaviors . RAD _WALL = [
"CR:radiation%0.7|CR:radiation%1.4|CR:radiation%0.7" ,
"CR:radiation%1.4|XX%0000000000000|CR:radiation%1.4" ,
"CR:radiation%0.7|CR:radiation%1.4|CR:radiation%0.7" ,
] ,
behaviors . RAD _GAS = [
"M2 AND CR:radiation%1|M1 AND CR:radiation%2|M2 AND CR:radiation%1" ,
"M1 AND CR:radiation%2|XX AND CR:radiation%2|M1 AND CR:radiation%2" ,
"M2 AND CR:radiation%1|M1 AND CR:radiation%2|M2 AND CR:radiation%1" ,
] ,
behaviors . RAD _MOLTEN = [
"XX|CR:radiation%2.5 AND CR:fire%2.5|XX" ,
"M2 AND CR:radiation%1|XX|M2 AND CR:radiation%1" ,
"M1|M1 AND CR:radiation%1|M1" ,
] ,
console . log ( behaviors . RAD _POWDER ) //forcing it to acknowledge the behaviors i just added instead of giving me "undefined"
elements . irradiated _dirt = {
color : [ "#70762b" , "#4c5c21" , "#50571a" , "#4c6b1e" ] ,
behavior : behaviors . RAD _POWDER ,
tempHigh : 1200 ,
2022-08-31 16:44:25 -04:00
stateHigh : "molten_irradiated_dirt" ,
2022-08-31 12:39:11 -04:00
reactions : {
"dirt" : { "elem1" : "dirt" , "elem2" : "irradiated_dirt" , "chance" : 0.0005 , "oneway" : true } ,
} ,
tempLow : - 50 ,
stateLow : "irradiated_permafrost" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 1220 ,
} ;
2022-08-31 16:44:25 -04:00
elements . molten _irradiated _dirt = {
2022-08-31 12:56:45 -04:00
"behavior" : behaviors . RAD _MOLTEN ,
"hidden" : true ,
"state" : "liquid" ,
2022-08-31 16:44:25 -04:00
"category" : "Irradiated" ,
2022-08-31 12:56:45 -04:00
"color" : [ "#e09315" , "#e07615" , "#e05800" , "#987310" , "#985c10" , "#984500" , "#a06c0d" , "#a0570d" , "#a04100" , "#98850f" , "#986b0f" , "#985000" ] ,
"temp" : 1250 ,
"tempLow" : 1100 ,
"stateLow" : "irradiated_dirt" ,
"density" : 1098 ,
"viscosity" : 10000
}
2022-08-31 12:39:11 -04:00
elements . irradiated _glass = {
color : [ "#597a58" , "#719171" ] ,
colorOn : [ "#6dab67" , "#88b567" ] ,
behavior : behaviors . RAD _WALL ,
tempHigh : 1500 ,
category : "solids" ,
state : "solid" ,
density : 2500 ,
breakInto : "irradiated_glass_shard" ,
conduct : 0.01 ,
} ;
elements . molten _irradiated _glass = {
2022-08-31 16:44:25 -04:00
behavior : behaviors . RAD _MOLTEN ,
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
} ;
elements . irradiated _glass _shard = {
color : [ "#597a58" , "#719171" , "#628263" ] ,
colorOn : [ "#6dab67" , "#88b567" , "#7bad6f" ] ,
behavior : behaviors . RAD _POWDER ,
tempHigh : 1500 ,
stateHigh : "molten_irradiated_glass" ,
category : "powders" ,
state : "solid" ,
density : 2500 ,
conduct : 0.01 ,
} ;
elements . irradiated _sand = {
color : "#cbdb7b" ,
behavior : behaviors . RAD _POWDER ,
tempHigh : 1700 ,
stateHigh : "molten_irradiated_glass" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 1602
} ;
elements . irradiated _mud = {
color : "#3c401c" ,
behavior : behaviors . RAD _STURDYPOWDER ,
reactions : {
"irradiated_dirt" : { "elem1" : "irradiated_dirt" , "elem2" : "irradiated_mud" , "chance" : 0.0005 , "oneway" : true } ,
"irradiated_sand" : { "elem1" : "irradiated_dirt" , "elem2" : "irradiated_wet_sand" , "chance" : 0.0005 , "oneway" : true } ,
"sand" : { "elem1" : "irradiated_dirt" , "elem2" : "irradiated_wet_sand" , "chance" : 0.0005 , "oneway" : true } ,
"dirt" : { "elem1" : "irradiated_dirt" , "elem2" : "irradiated_mud" , "chance" : 0.0005 , "oneway" : true } ,
} ,
tempHigh : 100 ,
stateHigh : "irradiated_mudstone" ,
tempLow : - 50 ,
stateLow : "irradiated_permafrost" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 1730 ,
stain : 0.02 ,
} ;
elements . irradiated _wet _sand = {
color : [ "#848c3a" , "#969e4c" ] ,
behavior : behaviors . RAD _STURDYPOWDER ,
reactions : {
"irradiated_sand" : { "elem1" : "irradiated_sand" , "elem2" : "irradiated_wet_sand" , "chance" : 0.0005 , "oneway" : true } ,
"irradiated_dirt" : { "elem1" : "irradiated_sand" , "elem2" : "irradiated_mud" , "chance" : 0.0005 , "oneway" : true } ,
"sand" : { "elem1" : "irradiated_sand" , "elem2" : "irradiated_wet_sand" , "chance" : 0.0005 , "oneway" : true } ,
"dirt" : { "elem1" : "irradiated_sand" , "elem2" : "irradiated_mud" , "chance" : 0.0005 , "oneway" : true } ,
} ,
tempHigh : 100 ,
stateHigh : "irradiated_packed_sand" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 1905 ,
} ;
var namelessArray = [ "dirt" , "sand" , "mud" , "wet_sand" ] ;
for ( i = 0 ; i < namelessArray . length ; i ++ ) {
var elementt = namelessArray [ i ] ;
if ( ! elements [ elementt ] . reactions ) {
elements [ elementt ] . reactions = { } ;
} ;
} ;
elements . water . reactions . radiation = { elem1 : "irradiated_water" , elem2 : null , chance : 0.25 } ,
elements . radiation . reactions . water = { elem2 : "irradiated_water" , elem1 : null , chance : 0.25 } ,
elements . dirt . reactions . radiation = { elem1 : "irradiated_dirt" , elem2 : null , chance : 0.25 } ,
elements . radiation . reactions . dirt = { elem2 : "irradiated_dirt" , elem1 : null , chance : 0.25 } ,
elements . sand . reactions . radiation = { elem1 : "irradiated_sand" , elem2 : null , chance : 0.25 } ,
elements . radiation . reactions . sand = { elem2 : "irradiated_sand" , elem1 : null , chance : 0.25 } ,
elements . mud . reactions . radiation = { elem1 : "irradiated_mud" , elem2 : null , chance : 0.25 } ,
elements . radiation . reactions . mud = { elem2 : "irradiated_mud" , elem1 : null , chance : 0.25 } ,
elements . wet _sand . reactions . radiation = { elem1 : "irradiated_wet_sand" , elem2 : null , chance : 0.25 } ,
elements . radiation . reactions . wet _sand = { elem2 : "irradiated_wet_sand" , elem1 : null , chance : 0.25 } ,
elements . irradiated _water = {
color : "#85cf57" ,
behavior : behaviors . RAD _LIQUID ,
tempHigh : 100 ,
stateHigh : [ "rad_steam" , "rad_steam" , "fallout" ] ,
tempLow : - 5 ,
stateLow : "irradiated_ice" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
heatCapacity : 4.184 ,
reactions : {
"water" : { elem1 : "water" , elem2 : "irradiated_water" , chance : 0.05 } , //swap
"dirt" : { // React with (water reacts with dirt to make mud)
"elem1" : null , // First element transforms into; in this case, water deletes itself
"elem2" : "irradiated_dirt" , // Second element transforms into; in this case, dirt turns to mud
} ,
"sand" : { "elem1" : null , "elem2" : "irradiated_wet_sand" , } ,
"rat" : { "elem2" : "rotten_meat" , chance : 0.005 } ,
"plague" : { "elem2" : null , chance : 0.3 , } ,
//"quicklime": { "elem1": null, "elem2": "slaked_lime", },
"rock" : { "elem2" : "irradiated_wet_sand" , "chance" : 0.00035 } ,
//"ruins": { "elem2": "rock", "chance": 0.00035 },
"mudstone" : { "elem2" : "irradiated_mud" , "chance" : 0.00035 } ,
"irradiated_mudstone" : { "elem2" : "irradiated_mud" , "chance" : 0.00035 } ,
"packed_sand" : { "elem2" : "irradiated_wet_sand" , "chance" : 0.00035 } ,
"irradiated_packed_sand" : { "elem2" : "irradiated_wet_sand" , "chance" : 0.00035 } ,
"fly" : { "elem2" : "dead_bug" , "chance" : 0.1 , "oneway" : true } ,
"firefly" : { "elem2" : "dead_bug" , "chance" : 0.1 , "oneway" : true } ,
"bee" : { "elem2" : "dead_bug" , "chance" : 0.05 , "oneway" : true } ,
"stink_bug" : { "elem2" : "dead_bug" , "chance" : 0.1 , "oneway" : true } ,
} ,
state : "liquid" ,
density : 997 ,
conduct : 0.03 ,
stain : 0.02 ,
}
elements . rad _steam . behavior = behaviors . RAD _GAS ;
elements . rad _steam . stateLow = "irradiated_water" ;
elements . rad _cloud . behavior = [
"XX|XX|XX" ,
"XX|CH:fallout,radiation,irradiated_water%0.025|M1%2.5 AND BO" ,
"CR:radiation%0.05|CR:radiation%0.05|CR:radiation%0.05" ,
] ;
elements . rad _cloud . tempLow = 0 ;
2022-08-31 16:44:25 -04:00
elements . rad _cloud . stateLow = "rad_snow_cloud" ;
2022-08-31 12:39:11 -04:00
elements . fallout . behavior = behaviors . RAD _POWDER ;
elements . irradiated _permafrost = {
color : [ "#51613d" , "#495234" , "#3b4a30" , "#4a4f35" ] ,
behavior : behaviors . RAD _SUPPORT ,
temp : - 50 ,
tempHigh : 10 ,
stateHigh : "irradiated_mudstone" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 700 ,
} ;
elements . irradiated _mudstone = {
color : "#4f5e25" ,
behavior : behaviors . RAD _SUPPORT ,
tempHigh : 1200 ,
stateHigh : "molten_irradiated_dirt" ,
tempLow : - 50 ,
stateLow : "irradiated_permafrost" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 1250 ,
breakInto : "irradiated_dirt" ,
} ;
elements . irradiated _packed _sand = {
color : "#79945c" ,
behavior : behaviors . RAD _SUPPORT ,
tempHigh : 1700 ,
stateHigh : "molten_irradiated_glass" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 1682 ,
breakInto : "irradiated_sand" ,
} ;
elements . irradiated _ice = {
color : "#b7e0b4" ,
behavior : behaviors . RAD _WALL ,
temp : 0 ,
tempHigh : 5 ,
stateHigh : "irradiated_water" ,
category : "solids" ,
state : "solid" ,
density : 917 ,
breakInto : "irradiated_snow" ,
} ;
elements . irradiated _snow = {
color : "#d5f2d3" ,
behavior : behaviors . RAD _POWDER ,
temp : 0 ,
tempHigh : 5 ,
tempLow : - 100 ,
stateLow : "irradiated_packed_snow" ,
stateHigh : "irradiated_water" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 100 ,
} ;
elements . irradiated _packed _snow = {
color : "#a7d4a3" ,
behavior : behaviors . RAD _SUPPORTPOWDER ,
temp : 0 ,
tempHigh : 20 ,
tempLow : - 200 ,
stateLow : "irradiated_ice" ,
stateHigh : "irradiated_water" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 400 ,
hidden : true ,
} ;
2022-08-31 16:44:25 -04:00
elements . rad _snow _cloud = {
2022-08-31 12:39:11 -04:00
color : [ "#2d6e31" , "#416e21" ] ,
behavior : [
"XX|XX|XX" ,
"XX|CH:fallout,radiation,irradiated_snow%0.025|M1%2.5 AND BO" ,
"CR:radiation%0.05|CR:radiation%0.05|CR:radiation%0.05" ,
] ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
hidden : true ,
state : "gas" ,
density : 0.5 ,
ignoreAir : true ,
temp : - 20 ,
tempHigh : 0 ,
stateHigh : "rad_cloud" ,
} ;
2022-08-31 16:44:25 -04:00
elements . rad _snow _cloud _floater = {
2022-08-31 12:39:11 -04:00
color : [ "#2d6e31" , "#416e21" ] ,
behavior : [
"M2|M1|M2" ,
2022-08-31 16:44:25 -04:00
"M1%80|CH:rad_snow_cloud_%0.2|M1%80" ,
2022-08-31 12:39:11 -04:00
"M%60|XX|M2%60" ,
] ,
reactions : {
2022-08-31 16:44:25 -04:00
"rad_snow_cloud_floater" : { elem1 : "rad_snow_cloud" , elem2 : "rad_snow_cloud" , chance : 0.003 } ,
"rad_snow_cloud" : { elem1 : "rad_snow_cloud" , elem2 : "rad_snow_cloud" , chance : 0.01 }
2022-08-31 12:39:11 -04:00
} ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
hidden : true ,
state : "gas" ,
density : 0.5 ,
temp : - 20 ,
tempHigh : 0 ,
stateHigh : "rad_cloud" ,
} ;
elements . irradiated _rock = {
color : [ "#768063" , "#444f3f" , "#7a9476" ] ,
behavior : behaviors . RAD _POWDER ,
tempHigh : 950 ,
stateHigh : "irradiated_magma" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 2550 ,
hardness : 0.5 ,
breakInto : [ "sand" , "gravel" ] ,
} ;
elements . irradiated _gravel = {
color : [ "#d1e3c8" , "#a6b090" , "#657360" , "#4d523f" ] ,
behavior : behaviors . RAD _POWDER ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
tempHigh : 950 ,
stateHigh : "irradiated_magma" ,
state : "solid" ,
density : 1680 ,
hardness : 0.2 ,
breakInto : "irradiated_sand" ,
} ;
elements . irradiated _basalt = {
color : [ "#262e20" , "#23331f" , "#3f4235" ] ,
behavior : behaviors . RAD _STURDYPOWDER ,
tempHigh : 1262.5 ,
stateHigh : "irradiated_magma" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "solid" ,
density : 3000 ,
hardness : 0.65 ,
breakInto : "irradiated_gravel" ,
} ;
elements . irradiated _magma = {
color : [ "#ff9100" , "#ffae00" , "#ff8400" ] ,
behavior : behaviors . RAD _MOLTEN ,
reactions : {
"ice" : { "elem1" : "irradiated_basalt" } ,
"irradiated_ice" : { "elem1" : "irradiated_basalt" } ,
"magma" : { "elem1" : "magma" , "elem2" : "irradiated_magma" , "chance" : 0.0005 , "oneway" : true } ,
} ,
temp : 1500 ,
tempLow : 850 ,
stateLow : [ "irradiated_basalt" , "irradiated_basalt" , "irradiated_basalt" , "irradiated_rock" ] ,
viscosity : 10000 ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:39:11 -04:00
state : "liquid" ,
density : 2725 ,
} ;
2022-08-31 16:44:25 -04:00
irradiatedObject = {
dirt : "irradiated_dirt" ,
molten _dirt : "molten_irradiated_dirt" ,
glass : "irradiated_glass" ,
irradiated _glass : "molten_irradiated_glass" ,
glass _shard : "irradiated_glass_shard" ,
sand : "irradiated_sand" ,
mud : "irradiated_mud" ,
wet _sand : "irradiated_wet_sand" ,
water : "irradiated_water" ,
permafrost : "irradiated_permafrost" ,
mudstone : "irradiated_mudstone" ,
packed _sand : "irradiated_packed_sand" ,
ice : "irradiated_ice" ,
snow : "irradiated_snow" ,
packed _snow : "irradiated_packed_snow" ,
snow _cloud : "rad_snow_cloud" ,
snow _cloud _floater : "rad_snow_cloud_floater" ,
rock : "irradiated_rock" ,
gravel : "irradiated_gravel" ,
basalt : "irradiated_basalt" ,
magma : "irradiated_magma"
} ;
function getKeyByValue ( object , value ) {
return Object . keys ( object ) . find ( key => object [ key ] === value ) ;
}
//getKeyByValue code by UncleLaz on StackOverflow: https://stackoverflow.com/questions/9907419/how-to-get-a-key-in-a-javascript-object-by-its-value"
//just for fun
elements . super _irradiator = {
color : "#66ee33" ,
tick : function ( pixel ) {
var twentiethOfTemp = pixel . temp / 20 ;
var roundOf20th = Math . round ( twentiethOfTemp ) ;
var boundedR20 = Math . max ( 1 , Math . min ( roundOf20th , 11 ) ) ;
var radius1 = ( - 1 * boundedR20 ) ;
var radius2 = ( boundedR20 + 1 ) ;
for ( let i = radius1 ; i < radius2 ; i ++ ) {
for ( let j = radius1 ; j < radius2 ; j ++ ) {
if ( ! isEmpty ( pixel . x + j , pixel . y + i ) && ! outOfBounds ( pixel . x + j , pixel . y + i ) ) {
var destPixel = pixelMap [ pixel . x + j ] [ pixel . y + i ] ;
var elementToCheck = destPixel . element ;
if ( irradiatedObject [ elementToCheck ] ) {
changePixel ( destPixel , irradiatedObject [ elementToCheck ] ) ;
} ;
} ;
} ;
} ;
} ,
category : "machines" ,
insulate : true ,
state : "solid" ,
} ;
elements . super _deirradiator = {
color : "#dd33ee" ,
tick : function ( pixel ) {
var twentiethOfTemp = pixel . temp / 20 ;
var roundOf20th = Math . round ( twentiethOfTemp ) ;
var boundedR20 = Math . max ( 1 , Math . min ( roundOf20th , 11 ) ) ;
var radius1 = ( - 1 * boundedR20 ) ;
var radius2 = ( boundedR20 + 1 ) ;
for ( let i = radius1 ; i < radius2 ; i ++ ) {
for ( let j = radius1 ; j < radius2 ; j ++ ) {
if ( ! isEmpty ( pixel . x + j , pixel . y + i ) && ! outOfBounds ( pixel . x + j , pixel . y + i ) ) {
var destPixel = pixelMap [ pixel . x + j ] [ pixel . y + i ] ;
var elementToCheck = destPixel . element ;
if ( getKeyByValue ( irradiatedObject , elementToCheck ) ) {
changePixel ( destPixel , getKeyByValue ( irradiatedObject , elementToCheck ) ) ;
} ;
} ;
} ;
} ;
} ,
category : "machines" ,
insulate : true ,
state : "solid" ,
} ;
elements . liquid _irradium = {
color : "#5499FF" ,
behavior : behaviors . RAD _LIQUID ,
tick : function ( pixel ) {
for ( i = 0 ; i < adjacentCoords . length ; i ++ ) {
if ( ! isEmpty ( pixel . x + adjacentCoords [ i ] [ 0 ] , pixel . y + adjacentCoords [ i ] [ 1 ] , true ) ) {
var destPixel = pixelMap [ pixel . x + adjacentCoords [ i ] [ 0 ] ] [ pixel . y + adjacentCoords [ i ] [ 1 ] ] ;
var elementToCheck = destPixel . element ;
if ( irradiatedObject [ elementToCheck ] ) {
changePixel ( destPixel , irradiatedObject [ elementToCheck ] ) ;
} ;
}
}
} ,
//Becomes rainbow sand by water or poison, as well as by protocite, or bio-ooze
//Becomes sulfuric acid on contact with it
//Becomes corrupt slime by elder fluid
//Converts black tar and organic soup into itself
//Turns either grav liquid into aether dust, as well as liquid crystal
//Turns blood into bloodstone
//Turns blue slime into black slime
//Made by {mercury or bio-ooze} and protocite
category : "liquids" ,
state : "liquid" ,
density : 18180 , //Cherry-picked from a Tumblr headcanon
//https://omniblog-of-starbound.tumblr.com/post/188424072728/starbound-element-headcannon-modded-metals
viscosity : 80.1 , //probably misinterpreting tickDelta, and w/o the game assets, I can't compare against water, so this is in relation to H2SO4 scaled to its density in cP and under the assumption that water visc = 1
} ;
2022-08-31 12:45:13 -04:00
if ( enabledMods . includes ( "mods/some_tf_liquids.js" ) ) {
elements . irradiated _basalt _gravel = {
color : [ "#394d37" , "#3b452f" , "#3f452a" , "#2d3d2c" ] ,
behavior : behaviors . RAD _POWDER ,
tempHigh : 1262.5 ,
stateHigh : "irradiated_magma" ,
2022-08-31 12:59:26 -04:00
category : "Irradiated" ,
2022-08-31 12:45:13 -04:00
state : "solid" ,
density : 1975 ,
hardness : 0.26 ,
}
elements . irradiated _basalt . breakInto = "irradiated_basalt_gravel" ;
} ;
2022-08-31 12:39:11 -04:00
worldgentypes . nuclear _wasteland = {
layers : [
[ 0.9 , "smoke" , 0.5 ] ,
2022-08-31 16:44:25 -04:00
[ 0.9 , "rad_snow_cloud_floater" , 0.75 ] ,
2022-08-31 12:39:11 -04:00
[ 0.82 , "fallout" , 0.4 ] ,
2022-08-31 16:44:25 -04:00
[ 0.7 , "liquid_irradium" , 0.05 ] ,
2022-08-31 12:39:11 -04:00
[ 0.7 , "dead_plant" , 0.12 ] ,
[ 0.55 , "irradiated_dirt" ] ,
[ 0.45 , "irradiated_rock" ] ,
2022-08-31 16:44:25 -04:00
[ 0.25 , "uranium" , 0.4 ] ,
2022-08-31 12:39:11 -04:00
[ 0.35 , "irradiated_rock" , 0.5 ] ,
[ 0.3 , "irradiated_gravel" , 0.5 ] ,
2022-08-31 16:44:25 -04:00
[ 0.2 , "uranium" , 0.2 ] ,
2022-08-31 12:39:11 -04:00
[ 0.05 , "rock" ] ,
[ 0 , "basalt" ] ,
] ,
temperature : - 5 //nuclear winter
} ;
2022-08-31 16:44:25 -04:00
//Dark world
worldgentypes . dark = {
layers : [
[ 0.8 , "carbon_dioxide" ] ,
[ 0.65 , "ink" ] ,
[ 0.5 , "charcoal" ] ,
[ 0 , "basalt" ]
]
} ;
2022-09-01 11:50:02 -04:00
//Money World (requires gems.js)
if ( enabledMods . includes ( "mods/gems.js" ) ) {
worldgentypes . money = {
layers : [
[ 0.9 , "emerald" ] ,
[ 0.6 , "diamond" ] ,
[ 0.3 , "gold_coin" ] ,
[ 0.1 , "ruby" , 1 / 3 ] ,
[ 0.1 , "amethyst" , 1 / 2 ] ,
[ 0.1 , "sapphire" ] ,
[ - 0.1 , "pearl" , 0.4 ] ,
[ - 0.1 , "onyx" ]
]
} ;
} ;