NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name WF Resource copier
// @version 2024-06-24
// @author Mario
// @license MIT
// @description Copies resources to be used by cargo scripts.
// @match https://*.atmoburn.com/blueprints.php*
// @match https://*.atmoburn.com/fleet.php*
// @grant unsafeWindow
// ==/UserScript==
eval(unsafeWindow.byId.toString());
unsafeWindow.eval(copyResources.toString());
unsafeWindow.eval(loadBPcost.toString());
unsafeWindow.eval(pasteBPCost.toString());
if (document.URL.includes("atmoburn.com/fleet.php")) {
let pasteCargoButton = document.createElement('button');
pasteCargoButton.className = "darkbutton";
pasteCargoButton.type = "button";
pasteCargoButton.innerHTML = "Paste Resources";
pasteCargoButton.title = "Pastes stored resources to load fields";
pasteCargoButton.addEventListener("click", pasteBPCost);
byId("fleetCargo").children[0].children[0].append(pasteCargoButton);
} else if (document.URL.includes("atmoburn.com/blueprints.php")) {
let clearResourcesContainer = document.createElement('div');
clearResourcesContainer.className = "aligncenter";
let clearResourcesButton = document.createElement('button');
clearResourcesButton.className = "darkbutton";
clearResourcesButton.type = "button";
clearResourcesButton.innerHTML = "Clear Resources";
clearResourcesButton.title = "Clears copied resources from local storage";
if (document.URL.includes("beta3")) {
clearResourcesButton.addEventListener("click", function (e) {
localStorage.removeItem("Blueprint Costs B3");
console.log("cleared resources from local storage");
});
} else {
clearResourcesButton.addEventListener("click", function (e) {
localStorage.removeItem("Blueprint Costs");
console.log("cleared resources from local storage");
});
}
clearResourcesContainer.append(clearResourcesButton);
byId("midcolumn").children[1].append(clearResourcesContainer)
let bplist;
if (document.URL.includes("beta3")) {
bplist = document.getElementsByClassName("tbborder flexwrapreverse");
} else {
bplist = document.getElementsByClassName("margintb5 flexwrapreverse");
}
Array.from(bplist).forEach(blueprint => {
let copyResourcesButton = document.createElement('button');
copyResourcesButton.className = "darkbutton";
copyResourcesButton.type = "button";
copyResourcesButton.innerHTML = "Copy Resources";
copyResourcesButton.title = "Copies resources to localstorage to be used by the cargo side of the script";
copyResourcesButton.addEventListener("click", function (e) {
copyResources(e.currentTarget.parentElement);
});
blueprint.append(copyResourcesButton)
let copy1000x = document.createElement('button');
copy1000x.className = "darkbutton";
copy1000x.type = "button";
copy1000x.innerHTML = "Copy 1000x";
copy1000x.title = "Copies resources to localstorage to be used by the cargo side of the script";
copy1000x.addEventListener("click", function (e) {
copyResources(e.currentTarget.parentElement, 1000);
});
blueprint.append(copy1000x)
})
}
function copyResources(blueprint, modifier=1) {
let blueprintCosts = loadBPcost()
Array.from(blueprint.children[1].getElementsByClassName("width100")[1].firstElementChild.children).forEach(child => {
if (child.children[0].textContent !== "Price:") {
blueprintCosts[child.children[0].textContent.replace(":","").toLowerCase()] += modifier * parseInt(child.children[1].textContent)
}
})
if (document.URL.includes("beta3")) {
localStorage.setItem("Blueprint Costs B3", JSON.stringify(blueprintCosts));
} else {
localStorage.setItem("Blueprint Costs", JSON.stringify(blueprintCosts));
}
}
function loadBPcost() {
if (document.URL.includes("beta3")) { // redefine if we're on old resource system
if (localStorage.getItem("Blueprint Costs B3")) {
return JSON.parse(localStorage.getItem("Blueprint Costs B3"))
} else {
return {
"iron": 0,
"copper": 0,
"silver": 0,
"titanium": 0,
"gold": 0,
"uranium": 0,
"platinum": 0,
"diamonds": 0,
"oil": 0,
"water": 0,
"food":0,
}
}
} else {
if (localStorage.getItem("Blueprint Costs")) {
return JSON.parse(localStorage.getItem("Blueprint Costs"))
} else {
return {
"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,
}
}
}
}
function pasteBPCost() {
let blueprintCost = loadBPcost();
if (document.URL.includes("beta3")) {
Array.from(byId("fleetCargo").getElementsByClassName("darkinput smalltext alignright")).forEach(field => {
field.value = blueprintCost[field.parentElement.previousElementSibling.previousElementSibling.textContent.toLowerCase()]
})
} else {
Array.from(byId("fleetCargo").getElementsByClassName("darkinput smalltext alignright margin1")).forEach(field => {
field.value = blueprintCost[field.parentElement.previousElementSibling.previousElementSibling.textContent.toLowerCase()]
})
}
}