var modName = "mods/insane_random_events.js"; var runAfterAutogenMod = "mods/runAfterAutogen and onload restructure.js"; var libraryMod = "mods/code_library.js"; if(enabledMods.includes(runAfterAutogenMod) && enabledMods.includes(libraryMod)) { if(typeof(width) === "undefined") { width = 20; } if(typeof(height) === "undefined") { height = 10; } runAfterAutogen(function() { //Regenerate randomChoices var randomChoices = Object.keys(elements).filter(function(e) { return elements[e].excludeRandom != true && elements[e].category != "tools" && !elements[e].tool; }); //Set all event choices to randomChoices randomEventChoices = { "falling_pixel": randomChoices.filter( function(elem) { return commonMovableCriteria(elem) } ), "element_circle": randomChoices, "explosion": randomChoices, } //Buff event functions randomEvents.old_falling_pixel = randomEvents.falling_pixel; //transform falling_pixel into a rain of pixels randomEvents.falling_pixel = function() { var element = randomEventChoices.falling_pixel[Math.floor(Math.random()*randomEventChoices.falling_pixel.length)]; for(i = 1; i < width; i++) { for(j = 0; j < Math.round(height * 0.35); j++) { if(Math.random() < 0.1 && isEmpty(i,j)) { createPixel(element,i,j) }; }; }; }; randomEvents.element_circle = function() { // random x between 1 and width-1 var x = Math.floor(Math.random()*(width-1))+1; // random y between 1 and height-1 var y = Math.floor(Math.random()*(height-1))+1; // random radius between 1 and 9 var radius = Math.floor(Math.random()*19)+1; // random element from randomEventChoices.element_circle var element = randomEventChoices.element_circle[Math.floor(Math.random()*randomEventChoices.element_circle.length)]; var coords = circleCoords(x,y,radius); for (var i = 0; i < coords.length; i++) { var coord = coords[i]; if (isEmpty(coord.x,coord.y)) { createPixel(element,coord.x,coord.y); } } }; randomEvents.explosion = function() { // similar but do explodeAt(x,y,radius,element) var x = Math.floor(Math.random()*(width-1))+1; var y = Math.floor(Math.random()*(height-1))+1; var radius = Math.floor(Math.random()*19)+1; var element = randomEventChoices.explosion[Math.floor(Math.random()*randomEventChoices.explosion.length)]; explodeAt(x,y,radius,element); }; randomEvents.temperature = function() { // set the temperature in a random circle to a random value var x = Math.floor(Math.random()*(width-1))+1; var y = Math.floor(Math.random()*(height-1))+1; var radius = Math.floor(Math.random()*19)+1; var temp = Math.floor(Math.random()*400)-273; var coords = circleCoords(x,y,radius); for (var i = 0; i < coords.length; i++) { var coord = coords[i]; if (!outOfBounds(coord.x,coord.y) && !isEmpty(coord.x,coord.y)) { pixelMap[coord.x][coord.y].temp = temp; } } }; if(enabledMods.includes("mods/paint_event.js")) { randomEvents.paint = function() { // set the color of a random circle to a random color var x = Math.floor(Math.random()*(width-1))+1; var y = Math.floor(Math.random()*(height-1))+1; var randomR = Math.floor(Math.random() * 256); var randomG = Math.floor(Math.random() * 256); var randomB = Math.floor(Math.random() * 256); var radius = Math.floor(Math.random()*19)+1; var rColor = "rgb(" + randomR + "," + randomG + "," + randomB + ")"; var coords = circleCoords(x,y,radius); for (var i = 0; i < coords.length; i++) { var coord = coords[i]; if (!outOfBounds(coord.x,coord.y) && !isEmpty(coord.x,coord.y)) { pixelMap[coord.x][coord.y].color = rColor; }; }; }; }; //Buff mob events if(typeof(maximumCreeperTries) !== "undefined") { minimumCreeperTries = 10; maximumCreeperTries = 30; }; if(typeof(maximumZombieTries) !== "undefined") { minimumZombieTries = 10; maximumZombieTries = 30; }; if(typeof(maximumSkeletonTries) !== "undefined") { minimumSkeletonTries = 10; maximumSkeletonTries = 30; }; //New event option var eventOptions = document.querySelectorAll('span[setting="events"]')[0].children[0]; var newEventOption = document.createElement("option"); newEventOption.setAttribute("value","1"); newEventOption.textContent = "Every tick (why)"; eventOptions.appendChild(newEventOption); }); } else { if(!enabledMods.includes(libraryMod)) { enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod) }; if(!enabledMods.includes(runAfterAutogenMod)) { enabledMods.splice(enabledMods.indexOf(modName),0,runAfterAutogenMod) }; localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); alert(`The "${runAfterAutogenMod}" and "${libraryMod}" mods are required and have been automatically inserted (reload for this to take effect).`); };