NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Science Utils // @version 2024-04-25 // @author Mario // @license MIT // @match https://*.atmoburn.com/sci_research.php* // @grant unsafeWindow // ==/UserScript== eval(unsafeWindow.byId.toString()); unsafeWindow.eval(addSci.toString()); unsafeWindow.eval(updateTeam.toString()); unsafeWindow.eval(colorTeam.toString()); unsafeWindow.eval(rmSci.toString()); function colorTeam() { let teamSize = byId("teamSize") if (parseInt(teamSize.textContent) < parseInt(byId("maxTeamSize").textContent)) { teamSize.parentElement.style.color = "red" } else { teamSize.parentElement.style.color = "white" } } function updateTeam() { if (byId('location')) { var elSel = byId('team'); var id = parseInt(byId('location').value); if (elSel) { var power = (id ? labData[id].capacity : 0); for (var sci in scientistData) { var thisSciRow = byId('sciRow' + sci); if (thisSciRow) { rmSci(sci, true); if (!id || scientistData[sci].colony == labData[id].colony) { thisSciRow.style.display = 'flex'; if (!id) byId('sciButton' + sci).disabled = true; else byId('sciButton' + sci).disabled = false; } else thisSciRow.style.display = 'none'; } } elSel.size = byId('maxTeamSize').innerHTML = power; elSel.length = 0; var sciGroupSelect = byId('sciGroupSelect'); sciGroupSelect.innerHTML = ""; if (id) { sciGroupSelect.appendChild(new Option('Select Group', 'NULL', true, true)); var sciColonyGroups = sciGroups[labData[id].colony]; if (sciColonyGroups) { for (var groupID in sciColonyGroups) { if (groupID == "NULL") continue; var numGroupMembers = 0; for(var sciID in scientistData) if (scientistData[sciID].groupID == groupID) numGroupMembers++; if (numGroupMembers > 0) { var option = new Option(sciGroups[labData[id].colony][groupID].name, groupID); if (labData[id].capacity < numGroupMembers) option.disabled = true; sciGroupSelect.appendChild(option); } } } } else { sciGroupSelect.appendChild(new Option("No lab selected", '', true, true)); } } } updateEstimate(); checkOK(); setTeamSkills(); colorTeam(); } function addSci(num, defer) { var elSel = document.getElementById('team'); var elOptNew = document.createElement('option'); var isin = 0; for (var i = 0; i < elSel.length; i++) { if (elSel.options[i].value == num) isin = 1; } if (isin == 0 && elSel.length < elSel.size) { elOptNew.text = num; elOptNew.value = num; elSel.add(elOptNew, null); // standards compliant; doesn't work in IE byId('sciRow' + num).classList.remove('light'); byId('sciRow' + num).classList.add('dark'); byId('sciButton' + num).classList.add('dangerbutton'); byId('sciButton' + num).innerHTML = "<span class='fa fa-user-minus'></span>"; byId('sciButton' + num).onclick = function () { rmSci(num); }; } if (!defer) { updateEstimate(); checkOK(); } byId('teamSize').innerHTML = elSel.length; colorTeam(); } function rmSci(id, defer) { var elSel = document.getElementById('team'); for (var i = elSel.length - 1; i >= 0; i--) { var sciID = elSel.options[i].value; if ((!id && elSel.options[i].selected) || (id && sciID == id)) { byId('sciRow' + sciID).classList.add('light'); byId('sciRow' + sciID).classList.remove('dark'); byId('sciButton' + sciID).classList.remove('dangerbutton'); byId('sciButton' + sciID).innerHTML = "<span class='fa fa-user-plus'></span>"; byId('sciButton' + sciID).onclick = function () { addSci(sciID); }; elSel.remove(i); break; } } if (!defer) { updateEstimate(); checkOK(); } byId('teamSize').innerHTML = elSel.length; colorTeam(); }