NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Fleet Tweaks // @version 2024-09-14 // @author Mario // @license MIT // @include https://*.atmoburn.com/fleet.php* // @include https://*.atmoburn.com/fleet/* // @include https://*.atmoburn.com/fleet_cargo_orders.php* // @grant unsafeWindow // ==/UserScript== eval(unsafeWindow.byId.toString()); unsafeWindow.eval(copyResources.toString()); unsafeWindow.eval(pasteResources.toString()); unsafeWindow.eval(getCurrentPlanet.toString()); unsafeWindow.eval(toSavedColony.toString()); unsafeWindow.eval(saveColony.toString()); unsafeWindow.eval(unloadAll.toString()); unsafeWindow.eval(loadAll.toString()); unsafeWindow.eval(carrierLoadAll.toString()); // Next and Previous fleet buttons if (byId("fleetlist").getElementsByClassName("highlight")[0].previousElementSibling && byId("fleetlist").getElementsByClassName("highlight")[0].previousElementSibling.className !== "sidemenu_header") { let previousFleet = document.createElement('a'); previousFleet.innerHTML = "Previous fleet"; previousFleet.id = "previousFleet"; previousFleet.className = "darkbutton"; previousFleet.style.fontSize = "10px"; previousFleet.href = byId("fleetlist").getElementsByClassName("highlight")[0].previousElementSibling.previousElementSibling.children[0].href; let elementIndex = 0; byId("midcolumn").getElementsByClassName("subtitle")[0].prepend(previousFleet) } if (byId("fleetlist").getElementsByClassName("highlight")[0].nextElementSibling.nextElementSibling) { // first nextElementSibling is always the script for the color let nextFleet = document.createElement('a'); nextFleet.innerHTML = "Next fleet"; nextFleet.id = "nextFleet"; nextFleet.className = "darkbutton"; nextFleet.style.fontSize = "10px"; nextFleet.href = byId("fleetlist").getElementsByClassName("highlight")[0].nextElementSibling.nextElementSibling.children[0].href; let elementIndex = 0; byId("midcolumn").getElementsByClassName("subtitle")[0].append(nextFleet) } function getCurrentPlanet() { let worldRef = byId("navData").children[1].children[0].children[0].children[1].href; return worldRef.substr(worldRef.indexOf("Planet(")+7, worldRef.indexOf(",")-(worldRef.indexOf("Planet(")+7)); } function toSavedColony() { verifyMission("tcolony,"+localStorage.getItem("tColony")); launchMission(); } function saveColony() { let colonyRef = byId("missionPosition").children[0].children[1].href; if (colonyRef.indexOf("colony=") > 0) { localStorage.setItem("tColony", colonyRef.substr(colonyRef.indexOf("colony=")+7, colonyRef.indexOf("&fleet")-(colonyRef.indexOf("colony=")+7))); } else { alert("target is not a colony") } } function massLoadUnload(resources, loadUnload, allOrNot) { resources.forEach(resource => { var myInterval = setInterval(function() { if (!amLoadingCargo) { cargoLoadUnload(resource, loadUnload, allOrNot); clearInterval(myInterval) } }, 10); }); } function carrierLoadAll() { try { Array.from(byId("fleetCarrier").getElementsByClassName("fa fa-angle-double-left")).forEach(carrierScript => { let carrierID = carrierScript.parentElement.parentElement.previousElementSibling.id.split("-"); console.log(carrierID); var myInterval = setInterval(function() { if (carrierScript.parentElement.parentElement.parentElement.lastElementChild.textContent === '0') {return} if (!amModifyingCarrier) { carrierLoadUnload(carrierID[0].substr(carrierID[0].indexOf("Load")+4), carrierID[1], 'load', 0); clearInterval(myInterval) } }, 100); }); } catch (e) { console.log(carrierID) console.log(e) } } function loadAll() { let resources = ["steel","aluminum","titanium","tungsten alloy","uranium","copper","gold","lithium","silicium","diamonds","cement","wood","plastic","food"]; if (document.domain.includes("beta3")) { resources = ["iron","copper","silver","titanium","gold","uranium","platinum","diamonds","oil","water","food"]; } massLoadUnload(resources,'load', false); } function unloadAll() { let resources = ["steel","aluminum","titanium","tungsten alloy","uranium","copper","gold","lithium","silicium","diamonds","cement","wood","plastic","food"]; if (document.domain.includes("beta3")) { resources = ["iron","copper","silver","titanium","gold","uranium","platinum","diamonds","oil","water","food"]; } massLoadUnload(resources,'unload', true); } if ( !document.URL.includes("fleet_cargo_orders") && !byId("pageSubContainer").textContent.includes("Explorer")) { let tCurrentPlanet = document.createElement('button'); tCurrentPlanet.className = "darkbutton"; tCurrentPlanet.type = "button"; tCurrentPlanet.innerHTML = "Select Current Planet"; tCurrentPlanet.title = "Selects Current Planet"; tCurrentPlanet.addEventListener("click", function(){verifyMission("tworld,"+getCurrentPlanet())}); byId("missionSelectionLocal").append(tCurrentPlanet); let tSavedColony = document.createElement('button'); tSavedColony.className = "darkbutton"; tSavedColony.type = "button"; tSavedColony.innerHTML = "To saved colony"; tSavedColony.title = "Send to saved colony"; tSavedColony.addEventListener("click", toSavedColony); byId("missionSelectionGlobal").append(tSavedColony); let saveColonyButton = document.createElement('button'); saveColonyButton.className = "darkbutton"; saveColonyButton.type = "button"; saveColonyButton.innerHTML = "Save target colony"; saveColonyButton.title = "Send to saved colony"; saveColonyButton.addEventListener("click", saveColony); byId("mButton").append(saveColonyButton); let loadAllButton = document.createElement('button'); loadAllButton.className = "darkbutton"; loadAllButton.type = "button"; loadAllButton.innerHTML = "<<< Load all"; loadAllButton.title = "Loads everything that is currently filled in"; loadAllButton.addEventListener("click", loadAll); byId("fleetCargo").children[0].children[0].append(loadAllButton); let unloadAllButton = document.createElement('button'); unloadAllButton.className = "darkbutton"; unloadAllButton.type = "button"; unloadAllButton.innerHTML = "Unload all >>>"; unloadAllButton.title = "Unloads all"; unloadAllButton.addEventListener("click", unloadAll); byId("fleetCargo").children[0].children[0].append(unloadAllButton); let fillCarriersButton = document.createElement('button'); fillCarriersButton.className = "darkbutton"; fillCarriersButton.type = "button"; fillCarriersButton.innerHTML = "Fill Carriers"; fillCarriersButton.title = "Fills Carriers"; fillCarriersButton.addEventListener("click", carrierLoadAll); byId("fleetCarrier").children[0].children[0].after(fillCarriersButton); } function copyResources(element, resources) { Array.from(element.parentElement.parentElement.parentElement.children[2].children).forEach(resource => { resources[resource.children[0].textContent.toLowerCase()] = resource.children[1].children[0].value }) } function pasteResources(element, resources) { Array.from(element.parentElement.parentElement.parentElement.children[2].children).forEach(resource => { resource.children[1].children[0].value = resources[resource.children[0].textContent.toLowerCase()] }) } let resources = { "steel": 0, "aluminum": 0, "titanium": 0, "tungsten alloy": 0, "uranium": 0, "copper": 0, "gold": 0, "lithium": 0, "silicium": 0, "diamonds": 0, "cement": 0, "wood": 0, "plastic": 0, "food":0, } if (document.URL.includes("beta3")) { // redefine if we're on old resource system resources = { "iron": 0, "copper": 0, "silver": 0, "titanium": 0, "gold": 0, "uranium": 0, "platinum": 0, "diamonds": 0, "oil": 0, "water": 0, "food":0, } } if (document.URL.includes("atmoburn.com/fleet_cargo_orders.php")) { Array.from(byId("routeList").children).forEach(tradeRoute => { let copyTradeRouteButton = document.createElement('button'); copyTradeRouteButton.className = "darkbutton"; copyTradeRouteButton.type = "button"; copyTradeRouteButton.innerHTML = "Copy Trade Route"; copyTradeRouteButton.title = "Copies stored trade route cargo"; copyTradeRouteButton.addEventListener("click", function(event){copyResources(event.currentTarget, resources)}); tradeRoute.children[0].children[1].children[3].children[1].append(copyTradeRouteButton); let pasteTradeRouteButton = document.createElement('button'); pasteTradeRouteButton.className = "darkbutton"; pasteTradeRouteButton.type = "button"; pasteTradeRouteButton.innerHTML = "Paste Trade Route"; pasteTradeRouteButton.title = "Pastes stored trade route cargo"; pasteTradeRouteButton.addEventListener("click", function(event){pasteResources(event.currentTarget, resources)}); tradeRoute.children[0].children[1].children[3].children[1].append(pasteTradeRouteButton); }) } // Maintenance button to other tab let maintenanceButton = byId("rosterTable").getElementsByClassName("darkbutton")[0]; let maintenanceAlternativeButton = document.createElement('a'); maintenanceAlternativeButton.className = "darkbutton"; maintenanceAlternativeButton.innerHTML = "Open Maintenance in other tab"; maintenanceAlternativeButton.target = "_blank"; maintenanceAlternativeButton.href = maintenanceButton.onclick.toString().split("/")[1].split("\"")[0]; maintenanceButton.after(maintenanceAlternativeButton); Array.from(byId("fleetlist").getElementsByClassName("highlight")).forEach(highlight => {highlight.style.backgroundColor = "darkgreen"}) //Keyboard shortcuts section document.onkeydown = function(e) { e = e || window.event; var keycode = e.which || e.keyCode; var ctrlPressed = e.ctrlKey || e.metaKey; //record if Ctrl key is pressed if( !ctrlPressed && document.activeElement.tagName == "BODY") { //skip if Ctrl key is pressed, activeElement used to skip if user has a text input active, don't do anything before page is loaded try { if( keycode == 37 && byId("previousFleet") && byId("previousFleet").style.visibility != "hidden") {// '37' is the keycode for ArrowLeft, skip if previous colony button doesn't exist or is hidden e.preventDefault(); byId("previousFleet").click(); } else if( keycode == 39 && byId("nextFleet") && byId("nextFleet").style.visibility != "hidden") {//'39' is the keycode for ArrowRight, skip if next colony button doesn't exist or is hidden e.preventDefault(); byId("nextFleet").click(); } } catch (error) {console.log("slow down faggot")} } };