2022-09-02 14:19:02 -04:00
/ *
TODO :
Porphyritic , vesicular , vitreous , and fragmental IRs ( if they exist , and i might make some up if they don ' t )
Other rocks that fit these categories ? ?
Sedimentary and metamorphic rocks in general
Proper classification of limestone in comments
* /
//Rocks
//Igneous
//Phaneritic
//Felsic: granite
elements . granite = {
color : [ "#F3C3AD" , "#F0AB75" , "#DDA888" , "#BD927E" , "#998473" , "#5C5E53" , "#BD8366" ] ,
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 1215 ,
stateHigh : "felsic_magma" ,
density : 2691 ,
hardness : 0.75 ,
breakInto : "granite_gravel" ,
} ;
elements . granite _gravel = {
color : [ "#E3B39D" , "#E09B65" , "#CD9878" , "#AD826E" , "#897463" , "#4C4E43" , "#AD7356" , "#F3C3AD" , "#F0AB75" , "#DDA888" , "#BD927E" , "#998473" , "#5C5E53" , "#BD8366" , "#FFD3BD" , "#FFBB85" , "#EDB898" , "#CDA28E" , "#A99483" , "#6C6E63" , "#CD9376" ] ,
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 1215 ,
stateHigh : "felsic_magma" ,
density : 1320 ,
} ;
elements . felsic _magma = {
"reactions" : {
"magma" : { "elem1" : "intermediate_magma" , "elem2" : "intermediate_magma" } ,
"ash" : { "elem1" : null , "elem2" : "molten_slag" } ,
"dust" : { "elem1" : null , "elem2" : "molten_slag" } ,
} ,
"name" : "felsic magma" ,
"color" : [ "#FFF457" , "#FF9257" , "#FF9200" , "#FFD63B" , "#FFAB3B" , "#FF8000" , "#FFD244" , "#FFA844" , "#FF7E00" , "#FFB73F" , "#FF923F" , "#FF6E00" , "#FFA53A" , "#FF843A" , "#FF6300" , "#B8762A" , "#B85E2A" , "#B84700" , "#FFA433" , "#FF8333" , "#FF6200" ] ,
"behavior" : behaviors . MOLTEN ,
"temp" : 1215 ,
"tempLow" : 800 ,
"stateLow" : [ "rhyolite" , "rhyolite" , "rhyolite" , "granite" ] ,
"viscosity" : 100000000 ,
"hidden" : true ,
"state" : "liquid" ,
"category" : "molten" ,
"density" : 2421.9
} ;
//Intermediate felsic: granodiorite (such a creative name)
elements . granodiorite = {
color : [ "#B1AB9D" , "#262001" , "#A6A292" , "#D6C5BC" , "#F2F2F2" , "#DED8C2" , "#978871" , "#A8AAA7" ] , //From image: By Rudolf Pohl - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=7788350
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 1050 , //poorly searchable term, little findable information, idk if accurate
stateHigh : "intermediate_felsic_magma" ,
density : 2644 , //last 2 digits made up again
hardness : 0.75 ,
breakInto : "granodiorite_gravel" ,
} ;
elements . granodiorite _gravel = {
color : [ "#A19B8D" , "#161000" , "#969282" , "#C6B5AC" , "#E2E2E2" , "#CEC8B2" , "#877861" , "#989A97" , "#B1AB9D" , "#262001" , "#A6A292" , "#D6C5BC" , "#F2F2F2" , "#DED8C2" , "#978871" , "#A8AAA7" , "#C1BBAD" , "#363011" , "#B6B2A2" , "#E6D5CC" , "#FFFFFF" , "#EEE8D2" , "#A79881" , "#B8BAB7" ] , //placeholder
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 1050 ,
stateHigh : "intermediate_felsic_magma" ,
density : 1296 ,
} ;
elements . intermediate _felsic _magma = {
"reactions" : {
"magma" : { "elem1" : "intermediate_magma" , "elem2" : "intermediate_magma" } ,
"ash" : { "elem1" : null , "elem2" : "molten_slag" } ,
"dust" : { "elem1" : null , "elem2" : "molten_slag" } ,
} ,
"name" : "intermediate felsic magma" ,
"color" : [ "#FFD64F" , "#FFAB4F" , "#FF8000" , "#7C5831" , "#7C5031" , "#7C5830" , "#FFCB49" , "#FFA249" , "#FF7A00" , "#FFF65E" , "#FFC55E" , "#FF9400" , "#FFFF79" , "#FFF279" , "#FFB600" , "#FFFF61" , "#FFD861" , "#FFA200" , "#FFAA39" , "#FF8839" , "#FF6600" , "#FFD554" , "#FFAA54" , "#FF8000" ] ,
"behavior" : behaviors . MOLTEN ,
"temp" : 1200 ,
"tempLow" : 1050 ,
"stateLow" : [ "dacite" , "dacite" , "dacite" , "granodiorite" ] ,
"viscosity" : 18700000 , //10^average of logarithms
"hidden" : true ,
"state" : "liquid" ,
"category" : "molten" ,
"density" : 2320 , //averaged lower values
} ;
//Intermediate: diorite
elements . diorite = {
color : [ "#E1E1E1" , "#B0A696" , "#707271" , "#434459" , "#242424" ] , //Extracted from image and blended
//By Michael C. Rygel - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31124755
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 1300 ,
stateHigh : "intermediate_magma" ,
density : 2822 , //last 2 digits made up.
hardness : 0.70 , //bs'd from MH rel to granite
breakInto : "diorite_gravel" ,
} ;
elements . diorite _gravel = {
color : [ "#F1F1F1" , "#E1E1E1" , "#D1D1D1" , "#C0B6A6" , "#B0A696" , "#A09686" , "#808281" , "#707271" , "#606261" , "#535469" , "#434459" , "#333449" , "#343434" , "#242424" , "#141414" ] ,
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 1260 ,
stateHigh : "intermediate_magma" ,
density : 1717 , //approximated from granite values
} ;
elements . intermediate _magma = {
"reactions" : {
"ash" : { "elem1" : null , "elem2" : "molten_slag" } ,
"dust" : { "elem1" : null , "elem2" : "molten_slag" } ,
} ,
"name" : "intermediate magma" ,
"color" : [ "#FFFF70" , "#FFE170" , "#FFA800" , "#FFCF4B" , "#FFA64B" , "#FF7C00" , "#E08E38" , "#E07238" , "#E05500" , "#86552C" , "#86442C" , "#863300" , "#482D12" , "#482412" , "#481B00" ] ,
"behavior" : behaviors . MOLTEN ,
"temp" : 1215 ,
"tempLow" : 1115 ,
"stateLow" : [ "andesite" , "andesite" , "andesite" , "diorite" ] ,
"viscosity" : 350000 ,
"hidden" : true ,
"state" : "liquid" ,
"category" : "molten" ,
"density" : 2450 ,
}
//Mafic: gabbro
elements . magma . name = "mafic magma" //because it cools into basalt
//the vanilla viscosity checks out
elements . rock . name = "gabbro" //based on it melting into mostly basalt, I am assuming that this is mafic magma cooling quickly, and thus assuming that the remainder is magma cooling more slowly into a phaneritic rock, and that woudld be gabbro
elements . magma . density = 2650
//Ultramafic: peridotite
elements . peridotite = {
color : [ "#908557" , "#A29E78" , "#7F8044" , "#C6BC87" , "#8C8656" , "#7C7C40" , "#837840" , "#8B8B69" ] ,
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 1400 ,
stateHigh : "ultramafic_magma" ,
density : 3347 , //appr from https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/GL003i009p00509#:~:text=Abstract,and%20the%20bulk%20rock%20analyses.
hardness : 0.76 ,
breakInto : "peridotite_gravel" ,
} ;
elements . peridotite _gravel = {
color : [ "#807547" , "#928e68" , "#6f7034" , "#b6ac77" , "#7c7646" , "#6c6c30" , "#736830" , "#7b7b59" , "#908557" , "#a29e78" , "#7f8044" , "#c6bc87" , "#8c8656" , "#7c7c40" , "#837840" , "#8b8b69" , "#a09567" , "#b2ae88" , "#8f9054" , "#d6cc97" , "#9c9666" , "#8c8c50" , "#938850" , "#9b9b79" ] ,
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 1400 ,
stateHigh : "ultramafic_magma" ,
density : 1681 ,
} ;
elements . ultramafic _magma = {
"reactions" : {
"ash" : { "elem1" : null , "elem2" : "molten_slag" } ,
"dust" : { "elem1" : null , "elem2" : "molten_slag" } ,
} ,
"name" : "ultramafic magma" ,
"color" : [ "#ffa62b" , "#ff852b" , "#ff6300" , "#ffc53c" , "#ff9e3c" , "#ff7600" , "#fea022" , "#fe8022" , "#fe6000" , "#ffeb43" , "#ffbc43" , "#ff8d00" , "#ffa72b" , "#ff862b" , "#ff6400" , "#f89b20" , "#f87c20" , "#f85d00" , "#ff9620" , "#ff7820" , "#ff5a00" , "#ffad34" , "#ff8b34" , "#ff6800" ] ,
"behavior" : behaviors . MOLTEN ,
"temp" : 1500 ,
"tempLow" : 1390 ,
"stateLow" : [ "peridotite" , "komatiite" , "komatiite" , "komatiite" ] ,
"viscosity" : 100 ,
"hidden" : true ,
"state" : "liquid" ,
"category" : "molten" ,
"density" : 2800
} ;
//Aphanitic
//Felsic: rhyolite
elements . rhyolite = {
color : [ "#A67153" , "#BF967E" , "#D9B5A0" , "#8C533E" , "#C99F86" , "#C5997E" , "#BB8A69" ] ,
// also from one of Michael C. Rygel's images
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 800 ,
stateHigh : "felsic_magma" ,
density : 2555 , //very wide range
hardness : 0.75 ,
breakInto : "rhyolite_gravel" ,
} ;
elements . rhyolite _gravel = {
color : [ "#B68163" , "#A67153" , "#966143" , "#CFA68E" , "#BF967E" , "#AF866E" , "#E9C5B0" , "#D9B5A0" , "#C9A590" , "#9C634E" , "#8C533E" , "#7C432E" , "#D9AF96" , "#C99F86" , "#B98F76" , "#D5A98E" , "#C5997E" , "#B5896E" , "#CB9A79" , "#BB8A69" , "#DB7A59" ] ,
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 800 ,
stateHigh : "felsic_magma" ,
density : 1254 , //approximated from granite values
} ;
//Intermediate felsic: dacite
elements . dacite = {
color : [ "#D9CCC5" , "#F2E9E4" , "#877670" , "#A69B97" ] ,
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 1050 ,
stateHigh : "intermediate_felsic_magma" ,
density : 2654 , //https://books.google.ca/books?id=ObUPAAAAIAAJ&pg=PA181&lpg=PA181&dq=dacite+specific+gravity&source=bl&ots=qn8B4sirWi&sig=Wp_MHqPuUGPNQobcuNP5c5wqkpU&hl=en&sa=X&ei=cimtUaH8Eab7yAH8joDABQ#v=onepage&q=dacite%20specific%20gravity&f=false
hardness : 0.75 ,
breakInto : "dacite_gravel" ,
} ;
elements . dacite _gravel = {
color : [ "#C9BCB5" , "#E2D9D4" , "#776660" , "#968B87" , "#D9CCC5" , "#F2E9E4" , "#877670" , "#A69B97" , "#E9DCD5" , "#FFF9F4" , "#978680" , "#B6ABA7" ] , //placeholder
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 1050 ,
stateHigh : "intermediate_felsic_magma" ,
density : 1300 ,
} ;
//Intermediate: andesite
elements . andesite = {
color : [ "#6F7575" , "#C5C9CB" , "#818787" , "#797F7F" , "#B5B9BA" , "#6D7371" , "#909696" ] ,
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 1215 ,
stateHigh : "intermediate_magma" ,
density : 2474 , //it varies very widely, so I made the last 2 digits up.
hardness : 0.75 ,
breakInto : "andesite_gravel" ,
} ;
elements . andesite _gravel = {
color : [ '#5f6565' , '#b5b9bb' , '#717777' , '#696f6f' , '#a5a9aa' , '#5d6361' , '#808686' , '#6f7575' , '#c5c9cb' , '#818787' , '#797f7f' , '#b5b9ba' , '#6d7371' , '#909696' , '#7f8585' , '#d5d9db' , '#919797' , '#898f8f' , '#c5c9ca' , '#7d8381' , '#a0a6a6' ] ,
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 1260 ,
stateHigh : "intermediate_magma" ,
density : 1214 , //approximated from granite values
} ;
//Mafic: basalt
//No changes from vanilla
//Ultramafic: komatiite
elements . komatiite = {
color : [ "#AEB5AE" , "#A9B8B5" , "#7B8881" , "#858B87" , "#949F97" , "#505B55" ] ,
behavior : behaviors . WALL ,
category : "land" ,
tempHigh : 1600 ,
stateHigh : "ultramafic_magma" ,
density : 3100 , //approximate density extrapolated from intermediate and mafic density
//the magma's density is more well-known but there's nothing on the solid rock (probably because it's so rare and often metamorphosed)
hardness : 0.75 ,
breakInto : "komatiite_gravel" ,
} ;
elements . komatiite _gravel = {
color : [ "#9ea59e" , "#99a8a5" , "#6b7871" , "#757b77" , "#848f87" , "#404b45" , "#aeb5ae" , "#a9b8b5" , "#7b8881" , "#858b87" , "#949f97" , "#505b55" , "#bec5be" , "#b9c8c5" , "#8b9891" , "#959b97" , "#a4afa7" , "#606b65" ] ,
behavior : behaviors . POWDER ,
category : "land" ,
tempHigh : 1600 ,
stateHigh : "ultramafic_magma" ,
density : 1650 , //approximated from granite values
} ;
//Vesicular
//Felsic: pumice
//Pumice goes here
//Intermediate felsic: ???
//???
//Intermediate: scoria
//Scoria
//Mafic: still scoria
//Also scoria
//Perhaps a "mafic_scoria"-"intermediate scoria" split if the literature allows
//Ultramafic: ???
//???
//Glassy
//Felsic: obsidian
//Obsidian
//Intermediate felsic: ???
//???
//Intermediate: ???
//???
//Mafic: ???
//???
//Ultramafic: ???
//???
//Sedimentary
//Chemical
//Clastic
//Grains < 1/16 mm
//Grains 1/16-2 mm
//Dummied-out debug counters
/ * s e d i m e n t S a n d s t o n e T r i e s = 0 ;
sedimentSandstoneTryIterations = 0 ;
sedimentSandstoneDetects = 0 ;
sedimentSandstoneNoDetects = 0 ;
sandstoneFormations = 0 ;
sandstoneFailures = 0 ; * /
//Elements from which simplified lithification can spread
sandstoneLithificationElements = [ "sand_sediment" , "sandstone" ]
//Water reaction to pick up the fine material (this is very simplified)
elements . water . reactions . wet _sand = {
"elem1" : "sandy_water" ,
"elem2" : [ "wet_sand" , "wet_sand" , "wet_sand" , "wet_sand" , "wet_sand" , null ] ,
chance : 0.01
} ;
//Sediment suspension
elements . sandy _water = {
color : [ "#768485" , "#849294" ] ,
behavior : behaviors . LIQUID ,
tempHigh : 100 ,
stateHigh : [ "steam" , "steam" , "sand" ] ,
//tempLow: 0,
//stateLow: "sandy_ice",
category : "liquids" ,
heatCapacity : 4.184 , //unimplemented
reactions : {
"dirt" : { // React with (water reacts with dirt to make mud)
"elem1" : [ null , null , "wet_sand" ] , // First element transforms into; in this case, water deletes itself
"elem2" : "mud" , // Second element transforms into; in this case, dirt turns to mud
} ,
"water" : { "elem1" : "water" , "elem2" : "sandy_water" , "chance" : 0.025 } ,
"sand" : { "elem1" : [ null , null , "wet_sand" ] , "elem2" : "wet_sand" , } ,
"sandy_water" : { "elem1" : "wet_sand" , "elem2" : "water" , "chance" : 0.001 } ,
"wet_sand" : { "elem2" : "sand_sediment" , "chance" : 0.0005 } ,
//"salt": { "elem1": "salt_water", "elem2": null },
//"sugar": { "elem1": "sugar_water", "elem2": null, },
"dust" : { "elem1" : "dirty_water" , "elem2" : null , } ,
"ash" : { "elem1" : "dirty_water" , "elem2" : null , } ,
"cyanide" : { "elem1" : "dirty_water" , "elem2" : null , } ,
//"carbon_dioxide": { "elem1": "seltzer", "elem2": null, "oneway":true },
"sulfur" : { "elem1" : "dirty_water" , "elem2" : null , } ,
"rat" : { "elem1" : "dirty_water" , chance : 0.005 } ,
"plague" : { "elem1" : "dirty_water" , "elem2" : null , } ,
"rust" : { "elem1" : "dirty_water" , chance : 0.005 } ,
"fallout" : { "elem1" : "dirty_water" , chance : 0.25 } ,
"radiation" : { "elem1" : "dirty_water" , chance : 0.25 } ,
"uranium" : { "elem1" : "dirty_water" , chance : 0.25 } ,
"rotten_meat" : { "elem1" : "dirty_water" , chance : 0.25 } ,
"quicklime" : { "elem1" : [ null , null , "wet_sand" ] , "elem2" : "slaked_lime" , } ,
"rock" : { "elem2" : "wet_sand" , "chance" : 0.00035 } ,
"ruins" : { "elem2" : "rock" , "chance" : 0.00035 } ,
"mudstone" : { "elem2" : "mud" , "chance" : 0.00035 } ,
//"methane": { "elem1":"primordial_soup", "elem2":"primordial_soup", tempMin:60, charged:true },
//"ammonia": { "elem1":"primordial_soup", "elem2":"primordial_soup", tempMin:60, charged:true },
"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 : 1097 ,
conduct : 0.02 ,
stain : 0.01 ,
}
//Sediment element where lithification code resides
elements . sand _sediment = {
hidden : true ,
color : "#d3b387" ,
hardness : 0.2 ,
behavior : [
"XX|XX|XX" ,
"XX|XX|XX" ,
"SW:wet_sand%1.5 AND M2|SW:wet_sand%2.5 AND M1|SW:wet_sand%1.5 AND M2"
] ,
reactions : {
"water" : { "elem1" : "sandy_water" , "elem2" : "sandy_water" , "chance" : 0.025 } ,
"sand" : { "elem1" : [ null , null , "wet_sand" ] , "elem2" : "wet_sand" , } ,
"sandy_water" : { "elem1" : [ "water" , "water" , "sand_sediment" ] , "chance" : 0.001 } ,
"wet_sand" : { "elem2" : "sand_sediment" , "chance" : 0.0005 } ,
} ,
tempHigh : 1700 ,
stateHigh : "molten_glass" ,
category : "land" ,
state : "solid" ,
density : 1602 ,
breakInto : "sand" ,
tick : function ( pixel ) {
var validNeighborArray = Array . apply ( null , Array ( adjacentCoords . length ) ) . map ( function ( ) { return false } ) ;
if ( Math . random ( ) < 0.0003 ) {
//sedimentSandstoneTries++;
for ( i = 0 ; i < adjacentCoords . length ; i ++ ) {
//sedimentSandstoneTryIterations++;
if ( isEmpty ( pixel . x + adjacentCoords [ i ] [ 0 ] , pixel . y + adjacentCoords [ i ] [ 1 ] , true ) ) {
validNeighborArray [ i ] = false ;
//sedimentSandstoneNoDetects++;
} else if ( ! isEmpty ( pixel . x + adjacentCoords [ i ] [ 0 ] , pixel . y + adjacentCoords [ i ] [ 1 ] , true ) ) {
/ * i f ( s a n d s t o n e L i t h i f i c a t i o n E l e m e n t s . i n c l u d e s ( p i x e l M a p [ p i x e l . x + a d j a c e n t C o o r d s [ i ] [ 0 ] ] [ p i x e l . y + a d j a c e n t C o o r d s [ i ] [ 1 ] ] . e l e m e n t ) ) {
validNeighborArray [ i ] = true ;
//sedimentSandstoneDetects++;
} else {
validNeighborArray [ i ] = false ;
//sedimentSandstoneNoDetects++;
} ; * /
validNeighborArray [ i ] = sandstoneLithificationElements . includes ( pixelMap [ pixel . x + adjacentCoords [ i ] [ 0 ] ] [ pixel . y + adjacentCoords [ i ] [ 1 ] ] . element ) ;
} ;
} ;
if ( validNeighborArray . includes ( true ) ) {
//sandstoneFormations++;
changePixel ( pixel , "sandstone" ) ;
} / * else {
sandstoneFailures ++ ;
} * / ;
} ;
} ,
}
//Fallback reaction setter
if ( ! elements . wet _sand . reactions ) {
elements . wet _sand . reactions = { } ;
} ;
//Reactions to add
elements . wet _sand . reactions . sand _sediment = {
elem1 : "sand_sediment" ,
chance : 0.0003
} ;
elements . wet _sand . reactions . wet _sand = {
elem1 : "sand_sediment" ,
chance : 0.0003
} ;
//Final rock
elements . sandstone = {
color : [ "#b27853" , "#d1a784" , "#d1a784" , "#d4996e" ] ,
behavior : behaviors . WALL ,
tempHigh : 1500 ,
2022-09-03 12:06:08 -04:00
stateHigh : "molten_glass" ,
2022-09-02 14:19:02 -04:00
category : "land" ,
state : "solid" ,
density : 2323 , //wide range
hardness : 0.5 ,
breakInto : "sand" ,
}
//Worldgen preset for testing
worldgentypes . test _ocean = {
layers : [
[ 0.9 , "wet_sand" , 0.2 ] ,
[ 0.9 , "sand" , 0.2 ] ,
[ 0.8 , "sandy_water" , 0.7 ] ,
[ 0.25 , "water" ] ,
[ 0.1 , "sand" , 0.1 ] ,
[ 0.1 , "clay" , 0.1 ] ,
[ 0.1 , "gravel" , 0.2 ] ,
[ 0.1 , "wet_sand" ] ,
[ 0.03 , "gravel" , 0.5 ] ,
[ 0.03 , "rock" ] ,
[ 0 , "basalt" ] ,
]
} ;
//Changes to vanilla desert
worldgentypes . desert = {
layers : [
[ 0.95 , "gravel" , 0.6 ] ,
[ 0.65 , "sand" ] ,
[ 0.55 , "bone" , 0.03 ] ,
[ 0.3 , "sandstone" ] ,
[ 0.05 , "rock" ] ,
[ - 0.78 , "basalt" ]
] ,
temperature : 38
} ;
2022-09-03 12:06:08 -04:00
//Irradiated version in more_worlds.js
2022-09-02 14:19:02 -04:00
2022-09-03 12:06:08 -04:00
//Grains > 2 mm
2022-09-02 14:19:02 -04:00
//Angular fragments
//Breccia
//Rounded fragments
//Conglomerate
//Gems
//There is a mineral classification scheme, but it will take a while to implement if I ever get around to it.
//We're assuming that the crystal structures reform properly because I don't want to have to research and implement refrozen amorphous forms.
//Emerald
elements . emerald = {
color : [ "#31e31e" , "#88fa5a" , "#28d419" , "#54e823" , "#64f235" ] ,
tempHigh : 1287 ,
//1: I can't be arsed to find out what happens to emerald in extreme heat. Apparently, neither can anyone else, and Google is useless for this.
//2: So I'm just assuming that the chromium impurities are polite and remain in solution with the molten beryl.
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 2710 , //within natural variation
hardness : 0.8 , //Mohs scaled to diamond
} ;
//Amethyst
elements . amethyst = {
color : [ "#c569e0" , "#bd43e0" , "#e37aeb" , "#ab2fe0" , "#b05bd4" , "#9b2cdb" ] ,
tempHigh : 1650 ,
//1: Gee, another quartz-like...
//2: Like with emerald, I'm trusting the impurities to stay dissolved because I don't exactly have any amethyst laying around to melt.
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 2650 ,
hardness : 0.7 ,
} ;
//Sapphire
elements . sapphire = {
color : [ "#2d43e3" , "#4d5fe3" , "#1f30cc" , "#375fdb" , "#2d39e3" ] ,
tempHigh : 2040 ,
//1: You can actually grow corundum-based gems through the Verneuil process
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 3980 ,
hardness : 0.9 ,
}
//Ruby
elements . ruby = {
//Corundum with different impurities, so I can copy/paste everything but the color
color : [ "#ff1222" , "#ff4545" , "#e30b13" , "#fa253b" , "#f2120f" ] ,
tempHigh : 2040 ,
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 3980 ,
hardness : 0.9 ,
}
//Topaz
elements . topaz = {
color : [ "#f7f431" , "#ffff5c" , "#f7e048" , "#fae43e" , "#fff86e" , "#ede321" ] ,
tempHigh : 1340 ,
stateHigh : "mullite" , //thermal decomposition
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 3500 ,
hardness : 0.8 ,
} ;
//Mullite
elements . mullite = {
color : [ "#f2d7bf" , "#f5cbdc" , "#f2dfd3" ] , //hardly a gemstone, but i will color it like the others regardless
tempHigh : 1840 ,
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 3110 ,
hardness : 0.7 ,
} ;
//Onyx
elements . onyx = {
color : [ "#1a1919" , "#070605" , "#111313" ] ,
tempHigh : 1650 , //another silicate mineral
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 2650 ,
hardness : 0.7 ,
} ;
//Opal
elements . opal = {
color : [ "#ffcfcf" , "#fff0d9" , "#fcf7c5" , "#e4ffd4" , "#d1fff5" , "#dcecfa" , "#dfdbff" , "#f5e0ff" , "#f7d0f1" ] ,
tempHigh : 100 ,
stateHigh : [ "broken_opal" , "broken_opal" , "broken_opal" , "broken_opal" , "broken_opal" , "broken_opal" , "broken_opal" , "broken_opal" , "broken_opal" , "steam" ] ,
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 2090 ,
hardness : 0.6 ,
breakInto : [ "quartz" , "quartz" , "quartz" , "quartz" , "quartz" , "quartz" , "quartz" , "quartz" , "quartz" , "water" ] ,
} ;
elements . broken _opal = {
color : [ "#f5e6e6" , "#ebe2d5" , "#f7f6ed" , "#e4eddf" , "#d8ebe7" , "#d8e0e8" , "#e4e3e8" , "#f4edf7" , "#ebebeb" ] ,
tempHigh : 1650 ,
stateHigh : "molten_quartz" ,
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 2322 ,
hardness : 0.55 , //it cracks
} ;
//Quartz
elements . quartz = { //silicates, silicates, and more silicates
color : [ "#f0f0f0" , "#e3e3e3" , "#f7f7f7" ] ,
tempHigh : 1650 ,
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 2650 ,
hardness : 0.7 ,
} ;
//Use in glass
elements . molten _quartz . reactions = {
quicklime : { elem1 : "molten_glass" , elem2 : [ "quicklime" , "quicklime" , "quicklime" , "quicklime" , "quicklime" , "quicklime" , "quicklime" , "quicklime" , "quicklime" , null ] } //lack of vanilla washing soda, lack of tripartite reactions
} ;
/ *
elements . elem1 . reactions = {
elem2 : { elem1 : "elem1_becomes" , elem2 : "elem2_becomes" }
} ;
* /
//Pearl (not a mineral)
elements . pearl = {
color : [ "#e3e3e3" , "#e3e0d1" , "#eddbce" , "#eef2c9" , "#d5f5dc" , "#d8f2ec" , "#fadcf9" , "#e3d1c1" , "#f2edc9" , "#e0f5d7" , "#e2beeb" , "#e3e3e3" , "#e3e0d1" , "#eddbce" , "#eef2c9" , "#d5f5dc" , "#d8f2ec" , "#fadcf9" , "#e3d1c1" , "#f2edc9" , "#e0f5d7" , "#e2beeb" , "#38332e" ] ,
tempHigh : 1340 , //yay, more thermal decomposition elements
behavior : behaviors . POWDER ,
category : "powders" ,
state : "solid" ,
density : 772 , //It is partly made of proteins and is said to burn, but I can't find an ignition point, so here it melts.
hardness : 0.45 ,
} ;
//Soil
//Dry dirt
elements . dry _dirt = {
color : [ "#a88e5e" , "#8f7950" , "#8a7045" , "#9e804c" ] ,
behavior : [
"XX|SW:dirt%3 AND SW:mud%6|XX" ,
"XX|XX|XX" ,
"M2|M1|M2" ,
] ,
tempHigh : 1200 ,
stateHigh : "molten_dirt" ,
tempLow : - 50 ,
stateLow : "dry_permafrost" ,
category : "land" ,
state : "solid" ,
density : 1100 ,
} ,
elements . molten _dirt = { //added manually because the change to dirt will prevent molten_dirt from being auto-generated
"behavior" : behaviors . MOLTEN ,
"hidden" : true ,
"state" : "liquid" ,
"category" : "states" ,
"color" : [ "#EC6A15" , "#EC5515" , "#EC3F00" , "#B85210" , "#B84210" , "#B83100" , "#AE4B0D" , "#AE3C0D" , "#AE2D00" , "#D65A0F" , "#D6480F" , "#D63600" ] ,
"temp" : 1200 ,
"tempLow" : 1100 ,
"stateLow" : "dry_dirt" ,
"density" : 1098 ,
"viscosity" : 10000
}
if ( enabledMods . includes ( "mods/boiling_rock.js" ) ) {
elements . molten _dirt . tempHigh = 3000 ;
elements . molten _dirt . stateHigh = "vaporized_rock" ;
} ;
elements . dry _permafrost = {
color : [ "#5B7870" , "#535D51" , "#52746A" , "#5A7A6F" ] ,
behavior : behaviors . POWDER , //not enough water for cementing
temp : - 50 ,
tempHigh : 10 ,
stateHigh : "dry_dirt" ,
category : "land" ,
state : "solid" ,
density : 1200 ,
}
elements . dirt . tempHigh = 110 ;
elements . dirt . stateHigh = "dry_dirt" ;
elements . water . reactions . dry _dirt = { elem1 : null , elem2 : "dirt" , chance : 0.1 }
if ( ! elements . mud . reactions ) {
elements . mud . reactions = { } ;
} ;
elements . mud . reactions . dry _dirt = { elem1 : "dirt" , elem2 : "dirt" , chance : 0.06 }