2024-04-06 19:49:46 -04:00
var elementslist = [ ]
for ( elementi in elements ) {
elementslist . push ( elementi )
}
2024-04-06 18:44:46 -04:00
elements . change _count = {
color : "#34eb86" ,
canPlace : false ,
behavior : behaviors . SELFDELETE ,
onSelect : function ( ) {
var cans = prompt ( "Please input how many elements you would like to be generared each time." , 10000 ) ;
if ( ! cans ) { return }
2024-04-06 19:04:28 -04:00
if ( cans > 2000000 ) { alert ( "You have put too big of a number! This would surely crash your browser or eat up all your RAM! Element count will remain unchanged." ) ; return }
2024-04-06 19:49:46 -04:00
if ( cans < 1 && ( parseInt ( cans ) > - 1 ) ) { alert ( "You have either put a decimal or zero. Why? Element count will remain unchanged." ) ; return }
2024-04-06 19:10:01 -04:00
if ( isNaN ( parseInt ( cans ) ) ) { alert ( "Apparently your input isnt even a number. Try again. Element count will remain unchanged." ) ; return }
2024-04-06 18:44:46 -04:00
settings . randomcount = parseInt ( cans )
saveSettings ( )
} ,
category : "random"
}
if ( ! settings . randomcount ) { settings . randomcount = 10000 ; saveSettings ( ) }
2024-04-03 18:34:17 -04:00
var color = [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "0" , "a" , "b" , "c" , "d" , "e" , "f" ]
var states = [ "solid" , "liquid" , "gas" ]
2024-04-06 19:49:46 -04:00
var essentialelements = [ "molten_gallium" , "gallium" , "gallium_gas" , "change_count" ]
2024-04-03 18:34:17 -04:00
var total = 0
2024-04-03 21:30:44 -04:00
var dangerouselements = [ "supernova" , "n_explosion" , "pn_explosion" , "armageddon" , "nuke" , "h_bomb" ]
2024-04-03 18:34:17 -04:00
function randomIntFromInterval ( min , max ) { // min and max included
return Math . floor ( Math . random ( ) * ( max - min + 1 ) + min )
}
var randomProperty = function ( obj ) {
var keys = Object . keys ( obj ) ;
return obj [ keys [ keys . length * Math . random ( ) << 0 ] ] ;
} ;
2024-04-06 19:49:46 -04:00
if ( Math . abs ( settings . randomcount ) == settings . randomcount ) {
for ( var i = 1 ; i <= settings . randomcount ; i ++ ) {
var f = Math . random ( ) < 0.2
var co = Math . random ( ) < 0.2
elements [ "element_" + i ] = {
color : "#" + color [ Math . floor ( Math . random ( ) * color . length ) ] + color [ Math . floor ( Math . random ( ) * color . length ) ] + color [ Math . floor ( Math . random ( ) * color . length ) ] + color [ Math . floor ( Math . random ( ) * color . length ) ] + color [ Math . floor ( Math . random ( ) * color . length ) ] + color [ Math . floor ( Math . random ( ) * color . length ) ] ,
category : "random" ,
behavior : randomProperty ( behaviors ) ,
state : states [ Math . floor ( Math . random ( ) * states . length ) ] ,
reactions : { } ,
density : randomIntFromInterval ( 1 , 10000 )
}
total = i
if ( f ) {
elements [ "element_" + i ] . tempHigh = 20 + randomIntFromInterval ( 10 , 6000 )
elements [ "element_" + i ] . stateHigh = elementslist [ Math . floor ( Math . random ( ) * elementslist . length ) ]
}
if ( co ) {
elements [ "element_" + i ] . tempLow = 20 - randomIntFromInterval ( 10 , 270 )
elements [ "element_" + i ] . stateLow = elementslist [ Math . floor ( Math . random ( ) * elementslist . length ) ]
}
for ( r = 0 ; r < 10 ; r ++ ) {
elements [ "element_" + i ] . reactions [ elementslist [ Math . floor ( Math . random ( ) * elementslist . length ) ] ] = { elem1 : elementslist [ Math . floor ( Math . random ( ) * elementslist . length ) ] , elem2 : elementslist [ Math . floor ( Math . random ( ) * elementslist . length ) ] }
}
// console.log(i + " is done!")
// console.log(i)
// console.log(elements["element_"+i].behavior)
if ( elements [ "element_" + i ] . density == i ) {
console . log ( i + "is unique because its density is the same as its id!" )
2024-04-03 18:34:17 -04:00
}
2024-04-06 19:49:46 -04:00
for ( var reaction in elements [ "element_" + i ] . reactions ) {
if ( dangerouselements . includes ( elements [ "element_" + i ] . reactions [ reaction ] . elem1 ) || dangerouselements . includes ( elements [ "element_" + i ] . reactions [ reaction ] . elem2 ) ) {
console . log ( i + " is scary due to its reaction with " + reaction )
if ( ! elements [ "element_" + i ] . desc ) {
elements [ "element_" + i ] . desc = "This is scary! Don't let it touch " + reaction
} else ( elements [ "element_" + i ] . desc += ( " or " + reaction ) )
}
2024-04-03 18:34:17 -04:00
}
2024-04-03 19:40:02 -04:00
}
2024-04-06 19:49:46 -04:00
} else {
window . addEventListener ( 'load' , function ( ) {
2024-04-06 19:56:21 -04:00
elementslist = [ ]
2024-04-06 19:55:41 -04:00
for ( elementi in elements ) {
elementslist . push ( elementi )
}
var eLen = elementslist . length
2024-04-06 19:49:46 -04:00
const p = document . createElement ( "p" ) ;
2024-04-06 19:55:41 -04:00
p . innerText = ` v ${ currentversion } • ` + ( eLen - Math . abs ( settings . randomcount ) ) + ` elements, with 0 hidden ` ;
2024-04-06 19:49:46 -04:00
document . getElementById ( "extraInfo" ) . querySelectorAll ( "small" ) [ 1 ] . replaceChildren ( p ) ;
if ( Math . abs ( settings . randomcount ) > elementslist . length ) {
console . log ( "mode 1" )
for ( var elementi in elements ) {
if ( ! essentialelements . includes ( elementi ) ) {
document . getElementById ( "elementButton-" + elementi ) ? . remove ( )
console . log ( elementi )
}
}
} else for ( var i = 1 ; i <= Math . abs ( settings . randomcount ) ; i ++ ) {
var elementi = elementslist [ Math . floor ( Math . random ( ) * elementslist . length ) ]
if ( ! essentialelements . includes ( elementi ) ) {
elementslist . splice ( elementslist . indexOf ( elementi ) , 1 )
document . getElementById ( "elementButton-" + elementi ) ? . remove ( )
console . log ( elementi )
2024-04-03 19:40:02 -04:00
}
2024-04-03 18:49:51 -04:00
}
2024-04-06 19:49:46 -04:00
} )
2024-04-03 18:34:17 -04:00
}