NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Scientist Overview tweaks // @version 2024-06-06 // @author Mario // @license MIT // @match https://beta4.atmoburn.com/overview.php?view=13 // @grant unsafeWindow // ==/UserScript== eval(unsafeWindow.byId.toString()); unsafeWindow.eval(hiredScientists.toString()); unsafeWindow.eval(availableScientists.toString()); hiredScientists() availableScientists() // builds the max stats overview for currently hired scientists function hiredScientists() { let stats = [0,0,0,0,0,0,0,0,0,0,0]; Array.from(document.getElementsByClassName("flexwrap dark margin2 marginauto flexTableWide")[0].parentElement.children).forEach(scientist => { let nStat = 0; Array.from(scientist.children[1].children).forEach(stat => { stats[nStat] = Math.max(parseInt(stat.innerHTML), stats[nStat]); nStat += 1; }) }) let maxStats = document.createElement('div'); maxStats.className = "flexwrap dark margin2 marginauto flexTableWide"; document.getElementsByClassName("flexwrap dark margin2 marginauto flexTableWide")[0].parentElement.prepend(maxStats); let maxStatsSection1 = document.createElement('div'); maxStatsSection1.className = "flex"; maxStatsSection1.style = "flex: 1 0 25em; align-items: center;"; maxStatsSection1.innerHTML = '<div class="padding5 alignleft bold">Max scientist stats: </div>'; maxStats.append(maxStatsSection1); let maxStatsSection2 = document.createElement('div'); maxStatsSection2.className = "flex"; maxStatsSection2.style = "flex: 1 0 25em; padding: 0.5em 0; align-items: center;"; maxStats.append(maxStatsSection2); stats.forEach(stat => { let statElement = document.createElement('div'); statElement.style = "flex: 1 0 1.5em;"; statElement.innerHTML = stat.toString(); maxStatsSection2.append(statElement); }) } // builds the max stats overview for scientists available for hire // builds the max stats overview for currently hired scientists function availableScientists() { let stats = [0,0,0,0,0,0,0,0,0,0,0]; Array.from(document.getElementsByClassName("midtitle bold")[2].nextElementSibling.nextElementSibling.getElementsByClassName("dark margin2 marginauto flexTableWide")).forEach(scientist => { let nStat = 0; Array.from(scientist.children[1].children).forEach(stat => { stats[nStat] = Math.max(parseInt(stat.innerHTML), stats[nStat]); nStat += 1; }) }) let maxStats = document.createElement('div'); maxStats.className = "dark margin2 marginauto flexTableWide"; let siblingForm = document.getElementsByClassName("midtitle bold")[2].nextElementSibling.nextElementSibling; let formParent = siblingForm.parentNode; formParent.insertBefore(maxStats, siblingForm); // document.getElementsByClassName("midtitle bold")[2].nextElementSibling.nextElementSibling.append(maxStats); let maxStatsSection1 = document.createElement('div'); maxStatsSection1.className = "flex"; maxStatsSection1.style = "flex: 1 0 25em; align-items: center;"; maxStatsSection1.innerHTML = '<div class="padding5 alignleft bold">Max scientist stats: </div>'; maxStats.append(maxStatsSection1); let maxStatsSection2 = document.createElement('div'); maxStatsSection2.className = "flex"; maxStatsSection2.style = "flex: 1 0 24em; padding: 0.5em 0; align-items: center;"; maxStats.append(maxStatsSection2); stats.forEach(stat => { let statElement = document.createElement('div'); statElement.style = "flex: 1 0 1.5em;"; statElement.innerHTML = stat.toString(); maxStatsSection2.append(statElement); }) }