sandboxels/mods/10kelements.js

102 lines
4.9 KiB
JavaScript
Raw Normal View History

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"
}
2024-04-07 14:26:05 -04:00
var choosebehaviors = behaviors
delete choosebehaviors.KILLPIXEL2
delete choosebehaviors.KILLPIXEL1
2024-04-06 18:44:46 -04:00
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",
2024-04-07 14:26:05 -04:00
behavior: randomProperty(choosebehaviors),
2024-04-06 19:49:46 -04:00
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
}