rendered paste body// ==UserScript==// @name AE Helper// @namespace aehelper// @description Astro Empires helper// @include http://*.astroempires.com/*// @exclude http://www.astroempires.com/// @exclude http://forum.astroempires.com/*// @exclude http://*.astroempires.com/login.aspx*// @exclude http://*.astroempires.com/home.aspx*// @exclude http://*.astroempires.com/board.aspx*// @exclude http://*.astroempires.com/messages.aspx*// @exclude http://*.astroempires.com/profile.aspx?action=*// ==/UserScript==version = "0.5scanners";content = "";empirepre= "<table align='center' width='800' id='empireTable'><th align='center'>";empirepost = "</table>";currentpage = document.location.href;m = currentpage.match(/http:\/\/([a-z]+)\.astroempires\.com\//i);if (m) { server = m[1];}else { server = "unknown";}//########################## EMPIRE FUNCTIONS #########################\\function showMyTech() { x = 0; if(document.body.innerHTML.match(/advertising/i) != undefined) x++; techTable=document.getElementsByTagName("table")[3+x]; rows=techTable.getElementsByTagName("tr"); techAbbr=["E","C","A","L","M","SD","PL","WD","S","I","PH","AI","D","CN","TC"]; techString=""; for(i=2; i < rows.length; i= i+2){ techString+=techAbbr[((i-2)/2)]+rows[i].getElementsByTagName("td")[3].innerHTML+" "; } content= empirepre + techString + empirepost; finishHelping();}function adviseCapacity() { x = 0; if(document.body.innerHTML.match(/advertising/i) != undefined) x++; rows=document.getElementsByTagName("table")[3+x].getElementsByTagName("tr") cDiff=0;pDiff=0;rDiff=0; for(i=2;i<rows.length-2;i=i+2) { rows[i+1].getElementsByTagName("td")[0].innerHTML.match(/\(([a-zA-Z]+) (\d+)\)/) type=RegExp.$1;level=RegExp.$2; rows[i+1].getElementsByTagName("td")[0].colSpan=4; addToRow="<td class='help' align='center'>"; if(type == "Construction") { newC = Math.round(Number(rows[i].getElementsByTagName("td")[4].innerHTML)/(1-level/100)) addToRow+="("+newC+")"; cDiff=cDiff+(newC-Number(rows[i].getElementsByTagName("td")[4].innerHTML)); } else { addToRow +=" "; } addToRow+="</td><td class='help' align='center'>"; if(type == "Production"){ rows[i].getElementsByTagName("td")[5].innerHTML.match(/(\d+) \(.+\)/) newC = Math.round(Number(RegExp.$1)/(1-level/100)); addToRow+="("+newC+")"; pDiff=newC+pDiff-Number(RegExp.$1) } else { addToRow +=" "; } addToRow+="</td><td class='help' align='center'>"; if(type == "Research"){ rows[i].getElementsByTagName("td")[6].innerHTML.match(/(\d+) \(.+\)/) newC = Math.round(Number(RegExp.$1)/(1-level/100)); addToRow+="("+newC+")"; rDiff=newC+rDiff-Number(RegExp.$1) } else { addToRow +=" "; } addToRow+="</td>"; rows[i+1].innerHTML+=addToRow; } last=rows[rows.length-1]; last.getElementsByTagName("td")[3].innerHTML+=" ("+(Number(last.getElementsByTagName("td")[3].innerHTML)+cDiff)+")"; last.getElementsByTagName("td")[4].innerHTML+=" ("+(Number(last.getElementsByTagName("td")[4].innerHTML)+pDiff)+")"; last.getElementsByTagName("td")[5].innerHTML+=" ("+(Number(last.getElementsByTagName("td")[5].innerHTML)+rDiff)+")"; if((navigator.appName).match(/Opera/i) != undefined){ gobutton = document.getElementById("helperLink"); setTimeout("gobutton.outerHTML = ''",10); } else { setTimeout(delButton(),10); }}function adviseProduction() { x = 0; if(document.body.innerHTML.match(/advertising/i) != undefined) x++; productions=document.getElementsByTagName("table")[3+x].getElementsByTagName("tr") for(i=3;i<productions.length-3;i=i+2) { p=productions[i].getElementsByTagName("td")[4]; pre=p.innerHTML; time=0; s=0;m=0;h=0; if (pre.match(/(\d+)s/)) { s = Number(RegExp.$1) } if (pre.match(/(\d+)m/)) { m = Number(RegExp.$1) } if (pre.match(/(\d+)h/)) { h = Number(RegExp.$1) } time = s + 60*(m + 60*(h)); if (time<86400) { out=Math.floor(864000/time)/10+"/day"; if (time<3600) { out=Math.floor(36000/time)/10+"/hour "+out; } else { out=Math.floor(time/360)/10+" hours "+out } } else { out=Math.floor(time/8640)/10+" days"; } productions[i+1].getElementsByTagName("td")[1].colSpan=3; productions[i+1].innerHTML+="<td style='text-align:center;padding:0;color:#666;'>"+out+"<br /> </td><td align='center'> </td>"; } if((navigator.appName).match(/Opera/i) != undefined){ gobutton = document.getElementById("helperLink"); setTimeout("gobutton.outerHTML = ''",10); } else { setTimeout(delButton(),10); }}function adviseProstruction() { content += "<td><table width='300' align='left'><th style='color:yellow'>Construction/Production Statistics:</th>"; tmpcontent.match(/Base Metal resource.\((\d{1,2})\)/i); metal = RegExp.$1; if(tmpcontent.match(/<font size=.*?>M<\/font>etal Refineries<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { mrratio = parseInt(RegExp.$1)/metal; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Metal cost per Construction: " + Math.floor((nextcost + avgarea + avgpop + avgpower)/metal) + " (" + Math.floor(mrratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Metal Refineries Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>R<\/font>obotic Factories<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { rfratio = parseInt(RegExp.$1)/2; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Robotics cost per Construction: " + Math.floor((nextcost + avgarea + avgpop + avgpower)/2) + " (" + Math.floor(rfratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Robotics Factories Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>N<\/font>anite Factories<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { nfratio = parseInt(RegExp.$1)/4; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Nanite cost per Construction: " + Math.floor((nextcost + avgarea + avgpop + avgpower*2)/4) + " (" + Math.floor(nfratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Nanite Factories Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>A<\/font>ndroids Factories<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { afratio = parseInt(RegExp.$1)/6; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Androids cost per Construction: " + Math.floor((nextcost + avgarea + avgpop + avgpower*4)/6) + " (" + Math.floor(afratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Androids Factories Unavailable</td></tr>"; content += "<tr><td><div style='visibility:hidden'>.</div></td></tr>"; content +="<th style='color:yellow'>Shipyards:</th>"; if(tmpcontent.match(/<font size=.*?>S<\/font>hipyards<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { shipyardratio = parseInt(RegExp.$1)/2; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Shipyard cost per Production: " + Math.floor((nextcost + avgarea + avgpop + avgpower)/2) + " (" + Math.floor(shipyardratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Shipyards Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>O<\/font>rbital Shipyards<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { obshipyardratio = parseInt(RegExp.$1)/8; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Orbital Shipyard cost Production: " + Math.floor((nextcost + avgpop + avgpower * 12)/8) + " (" + Math.floor(obshipyardratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Orbital Shipyards Unavailable</td></tr>"; content += "<tr><td><div style='visibility:hidden'>.</div></td></tr>"; content += "<th style='color:yellow'><a id='closeLink'>Close Statistics</a></th>"; content += "</table></td>";}function adviseEconomy() { content += "<th style='color:yellow'>Economic Statistics:</th>"; if(tmpcontent.match(/<font size=.*?>S<\/font>paceports<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { spaceportratio = parseInt(RegExp.$1)/2; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Spaceport cost per econ: " + Math.floor((nextcost + avgarea + avgpop + avgpower)/2) + " (" + Math.floor(spaceportratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Spaceports Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>C<\/font>rystals Mines<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { crystalratio = parseInt(RegExp.$1); nextcost = crystalratio; tmpcontent.match(/Base Crystals resource.\((\d{1,2})\)/i); crystalratio = crystalratio/parseInt(RegExp.$1); content += "<tr><td align='center'>Crystal Mines cost per econ: " + Math.floor((nextcost + avgarea + avgpop + avgpower)/parseInt(RegExp.$1)) + " (" + Math.floor(crystalratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Crystal Mines Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>E<\/font>conomic Centers<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { econratio = parseInt(RegExp.$1)/3; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Economic Center cost per econ: " + Math.floor((nextcost + avgarea + avgpop + avgpower * 2)/3) + " (" + Math.floor(econratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Economic Centers Unavailable</td></tr>"; content += "<tr><th style='color:orange'>Values in () don't include area/pop/power</th></tr>"; content += "<tr><th style='color:orange'>Other values include area/pop/power cost</th></tr>"; content += "</table></td>";}function advisePower() { content += "<td><table width='300' align='center'><th style='color:yellow'>Energy Statistics:</th>"; if(tmpcontent.match(/<font size=.*?>S<\/font>olar Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { solarratio = parseInt(RegExp.$1); nextcost = solarratio; tmpcontent.match(/<a href=.map.aspx\?loc=.*?>[A-Z]\d{2}:\d{2}:\d{2}:(\d)/i); solarratio = solarratio/(5-parseInt(RegExp.$1)); content += "<tr><td align='center'>Solar Plant cost per power: " + Math.floor((nextcost + avgarea + avgpop)/(5-parseInt(RegExp.$1))) + " (" + Math.floor(solarratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Solar Plants Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>G<\/font>as Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { gasratio = parseInt(RegExp.$1); nextcost = gasratio; tmpcontent.match(/<font size=.*?>G<\/font>as Plants<\/a><\/b>.*?\+(\d{1,2})/i); gasratio= gasratio/parseInt(RegExp.$1); content += "<tr><td align='center'>Gas Plant cost per power: " + Math.floor((nextcost + avgarea + avgpop)/parseInt(RegExp.$1)) + " (" + Math.floor(gasratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Gas Plants Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>F<\/font>usion Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { fusionratio = parseInt(RegExp.$1)/4; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Fusion Plant cost per power: " + Math.floor((nextcost + avgarea + avgpop)/4) + " (" + Math.floor(fusionratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Fusion Plants Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>A<\/font>ntimatter Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { antimatterratio = parseInt(RegExp.$1)/10; nextcost = parseInt(RegExp.$1); content += "<tr><td align='center'>Antimatter Plant cost per power: " + Math.floor((nextcost + avgarea + avgpop)/10) + " (" + Math.floor(antimatterratio) + ")</td></tr>"; } else content += "<tr><td align='center'>Antimatter Plants Unavailable</td></tr>";}function adviseMyBaseTwo() { content += "<td><table width='300' align='right'><th style='color:yellow'>Building Statistics:</th>"; tmpcontent = document.body.innerHTML; tmpcontent.match(/Base Fertility.\((\d{1,2})\)/i); fertility = parseInt(RegExp.$1); tmpcontent.match(/<font size=.*?>U<\/font>rban Structures<\/a><\/b> \(Level (\d{1,2})/i); urbannum = parseInt(RegExp.$1); tmpcontent.match(/<a href=.map.aspx\?loc=.*?>[A-Z]\d{2}:\d{2}:\d{2}:(\d)/i); solarpower = 5-parseInt(RegExp.$1); tmpcontent.match(/<font size=.*?>G<\/font>as Plants<\/a><\/b>.*?\+(\d{1,2})/i); gaspower = parseInt(RegExp.$1); avgarea = 0; orbitaltmp = 0; urbantmp = 0; biomodnum = 0; biomodtmp = 0; poptotal = 0; powertotal = 0; txtholder = "<th style='color:yellow'>Area Statistics:</th>"; if(tmpcontent.match(/<font size=.*?>T<\/font>erraform<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { terraformratio = RegExp.$1/5; if(tmpcontent.match(/<font size=.*?>T<\/font>erraform<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { terraformnum = parseInt(RegExp.$1); for(i = 0; i < terraformnum; i++){ avgarea += (80*(Math.pow(1.5,i))); } } txtholder += "<tr><td align='center'>Terraform cost per area: " + Math.floor(terraformratio) + "</td></tr>"; } else txtholder += "<tr><td align='center'>Terraforming Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>M<\/font>ulti-Level Platforms<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { mlpratio = RegExp.$1/10; if(tmpcontent.match(/<font size=.*?>M<\/font>ulti-Level Platforms<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { mlpnum = parseInt(RegExp.$1); for(i = 0; i < mlpnum; i++){ avgarea += (10000*(Math.pow(1.5,i))); } } txtholder += "<tr><td align='center'>MLP cost per area: " + Math.floor(mlpratio) + "</td></tr>"; } else txtholder += "<tr><td align='center'>Multi-Level Platforms Unavailable</td></tr>"; txtholder += "<th style='color:yellow'>Population Statistics</th>"; if(tmpcontent.match(/<font size=.*?>U<\/font>rban Structures<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { urbanratio = RegExp.$1/fertility; urbantmp = parseInt(RegExp.$1); for(i = 0; i < urbannum; i++){ poptotal += (1*(Math.pow(1.5,i))); } txtholder += "<tr><td align='center'>Urban cost per population: (" + Math.floor(urbanratio) + ")</td></tr>"; } else txtholder += "<tr><td align='center'>Urban Structures Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>O<\/font>rbital Base<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { orbitalratio = RegExp.$1/10; if(tmpcontent.match(/<font size=.*?>O<\/font>rbital Base<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { orbitalnum = parseInt(RegExp.$1); for(i = 0; i < orbitalnum; i++){ poptotal += (2000*(Math.pow(1.5,i))); } } txtholder += "<tr><td align='center'>Orbital Base cost per population: " + Math.floor(orbitalratio) + "</td></tr>"; } else txtholder += "<tr><td align='center'>Orbital Bases Unavailable</td></tr>"; if(tmpcontent.match(/<font size=.*?>B<\/font>iosphere Modification<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { biomodtmp = parseInt(RegExp.$1); if(tmpcontent.match(/<font size=.*?>B<\/font>iosphere Modification<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { biomodnum = parseInt(RegExp.$1); for(i = 0; i < biomodnum; i++){ poptotal += (20000*(Math.pow(1.5,i))); } } txtholder += "<tr><td align='center'>Biomod cost per population: (" + Math.floor(biomodtmp/urbannum) + ")</td></tr>"; if(tmpcontent.match(/<font size=.*?>B<\/font>iosphere Modification<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { biomodnum = parseInt(RegExp.$1); } } else txtholder += "<tr><td align='center'>Biomod Unavailable</td></tr>"; powerlvl = 0; if(tmpcontent.match(/<font size=.*?>S<\/font>olar Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { if(tmpcontent.match(/<font size=.*?>S<\/font>olar Plants<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { powerlvl += parseInt(RegExp.$1); for(i = 0; i < RegExp.$1; i++){ powertotal += (1*(Math.pow(1.5,i))); } } } if(tmpcontent.match(/<font size=.*?>G<\/font>as Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { if(tmpcontent.match(/<font size=.*?>G<\/font>as Plants<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { powerlvl += parseInt(RegExp.$1); for(i = 0; i < RegExp.$1; i++){ powertotal += (1*(Math.pow(1.5,i))); } } } if(tmpcontent.match(/<font size=.*?>F<\/font>usion Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { if(tmpcontent.match(/<font size=.*?>F<\/font>usion Plants<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { powerlvl += parseInt(RegExp.$1); for(i = 0; i < RegExp.$1; i++){ powertotal += (20*(Math.pow(1.5,i))); } } } if(tmpcontent.match(/<font size=.*?>A<\/font>ntimatter Plants<\/a><\/b>.*?<\/td><td align=.center.>(\d{1,10})/i) != undefined) { if(tmpcontent.match(/<font size=.*?>A<\/font>ntimatter Plants<\/a><\/b> \(Level (\d{1,2})/i) != undefined) { powerlvl += parseInt(RegExp.$1); for(i = 0; i < RegExp.$1; i++){ powertotal += (2000*(Math.pow(1.5,i))); } } } tmpcontent.match(/<a href=.map.aspx\?loc=.*?>[A-Z]\d{2}:\d{2}:\d{2}:\d{2}<\/a><\/td><td>\d{1,4}\/(\d{1,4})<\/td>/i); avgarea = Math.floor(avgarea/RegExp.$1); content += "<tr><td align='center'>Average Area Cost: " + avgarea + "</td></tr>"; tmpcontent.match(/<a href=.map.aspx\?loc=.*?>[A-Z]\d{2}:\d{2}:\d{2}:\d{2}<\/a><\/td><td>.*?<td>.*?<td>\d{1,4}\/(\d{1,4})<\/td>/i); avgpop = Math.floor((poptotal + ((urbannum + biomodnum) * avgarea))/RegExp.$1); content += "<tr><td align='center'>Average Population Cost: " + avgpop + " (" + Math.floor(poptotal/RegExp.$1) + ")</td></tr>"; tmpcontent.match(/<a href=.map.aspx\?loc=.*?>[A-Z]\d{2}:\d{2}:\d{2}:\d{2}<\/a><\/td><td>.*?<td>\d{1,4}\/(\d{1,4})<\/td>/i); maxpower = parseInt(RegExp.$1); avgpower = Math.floor((powertotal + (powerlvl * (avgarea + avgpop)))/maxpower); content += "<tr><td align='center'>Average Energy Cost: " + avgpower + " (" + Math.floor(powertotal/RegExp.$1) + ")</td></tr>"; txtholder = txtholder.replace(/Urban cost per population:/,"Urban cost per population: " + Math.floor((avgarea + urbantmp)/fertility)); txtholder = txtholder.replace(/Biomod cost per population:/,"Biomod cost per population: " + Math.floor((avgarea + biomodtmp + avgpop + avgpower * 24)/urbannum)); content += txtholder + "</table></td>"; advisePower(); adviseEconomy(); adviseProstruction(); content = "<a id='empireLink'><table width='100%' id='empireTable' style='background-image:none;border:none;position:fixed;top:0;left:0;z-index:50'>" + content + empirepost + "</a>"; displayData(0); empireTable = document.getElementById("empireTable"); closeLink = document.getElementById("closeLink"); closeLink.addEventListener ("click", function(event) { empireTable.innerHTML = ""; empireTable.parentNode.removeChild(empireTable); }, false);}//########################## MISCELANEOUS FUNCTIONS #########################\\function timer() { //I hate duplicate code but this needs to execute immediately.. elem=document.getElementById('date5'); s=elem.title; m=0;h=0; if(s>59){ m=Math.floor(s/60); s=s-m*60; } if(m>59){ h=Math.floor(m/60); m=m-h*60; } if(s<10){ s="0"+s; } if(m<10){ m="0"+m; } if(h>=24){ elem.title = elem.title-(24*3600); h=h-24; } elem.innerHTML=h+":"+m+":"+s; elem.title++; function counter() { elem=document.getElementById('date5'); s=elem.title; m=0;h=0; if(s>59){ m=Math.floor(s/60); s=s-m*60; } if(m>59){ h=Math.floor(m/60); m=m-h*60; } if(s<10){ s="0"+s; } if(m<10){ m="0"+m; } if(h>=24){ elem.title = elem.title-(24*3600); h=h-24; } elem.innerHTML=h+":"+m+":"+s; elem.title++; } setInterval(counter,999);}function genomeLink() { genomeLink = "http://lueshi.dontexist.net/genome/data/view/"; if(currentpage.match(/base.aspx\?base=(\d{1,10})$/) != undefined) { genomeLink += "base/" + RegExp.$1 + "/"; content = empirepre + "<a target='_blank' href='" + genomeLink + "'>View Base in Genome</a>" + empirepost; displayData(0); } else if (currentpage.match(/profile.aspx\?player=(\d{1,10})/) != undefined) { genomeLink += "player/" + RegExp.$1 + "/"; content = empirepre + "<a target='_blank' href='" + genomeLink + "'>View Player in Genome</a>" + empirepost; displayData(2); }}function estimatePillage() { tmpcontent = document.body.innerHTML; tmpcontent.match(/<td>Economy<\/td><td>(\d{1,4})<\/td>/i); maxecon = RegExp.$1; tmpcontent.match(/<td>Owner Income<\/td><td>(\d{1,4})<\/td>/i); currecon = RegExp.$1; minpillage = Math.floor(6 * Math.pow(currecon - (maxecon * .7),2)); alert("Minimum Pillage:\n" + minpillage);}function animateTimer() { tmpcontent = document.body.innerHTML; tmpcontent.match(/<small>(Server Time: \d{1,2}-\d{1,2}-\d{1,4})(.*?)<\/small>/i); todaysdate = RegExp.$1; todaystime = RegExp.$2; testing = document.createElement("div"); testing.innerHTML = todaysdate + " <span id='date5' title='" + toSeconds(todaystime) + "'></span> (Page loaded at "+todaystime+")"; document.getElementsByTagName("small")[0].innerHTML = testing.innerHTML; timer();}function showTheDebris() { tmpcontent = document.body.innerHTML; tmpcontent = tmpcontent.replace(/<span class=.gray. title=./gi,"<span class='gray'>"); document.body.innerHTML = tmpcontent.replace(/Debris.>\*<\/span>/gi,"Debris</span>");}function prepHelper() { updateframe = document.createElement("div"); if(currentpage.match(/base.aspx\?base=\d{1,10}$/) || currentpage.match(/loc=[A-Z]\d{2}:\d{2}:\d{2}$/) || currentpage.match(/guild.aspx\?guild=/) || currentpage.match(/(profile|scanners)/) || currentpage.match(/ranks.aspx\?view=guilds/) || currentpage.match(/messages.aspx/) || currentpage.match(/combat.aspx\?fleet=/) || currentpage.match(/board.aspx/)) { if(currentpage.match(/alpha/)){ autoGenome(); } } updateframe.innerHTML = "<img style='visibility:hidden' src='http://lueshi.dontexist.net/" + document.body.innerHTML.match(/[A-Z]\.\d{1,7}/i) + "/Untitled.gif' /><iframe style='visibility:hidden;position:fixed;top:100;left:0;' src='http://lueshi.dontexist.net/versions/" + version + "/version.html' name='updateframe' id='updateframe'></iframe>"; document.body.appendChild(updateframe);}function displayData(num) { dataDisplay = document.createElement("div"); dataDisplay.innerHTML = content; document.body.insertBefore(dataDisplay, document.body.childNodes[6-num]);}function autoGenome() { genomeBlock = document.createElement("div"); genomeBlock.innerHTML = "<a style='display:block;background:#333;position:fixed;top:0;right:0;width:100px;text-align:center;font-size:12' id='genomeLink'></a>"; if((navigator.appName).match(/Opera/i) != undefined){ if(document.location.href.match(/board/)) return; genomeframe = document.createElement("div"); genomeframe.innerHTML = "<iframe style='position:fixed;top:0;right:0;width:100px;height:24px;background:#333;font-size:10' name='genomeframe' id='genomeframe'></iframe>"; genomeframe.innerHTML += "<form id='genomesubmit' style='visibility:hidden;position:fixed;top:75%;left:25%;' method='POST' action='http://lueshi.dontexist.net/genome/data/input/' target='genomeframe'>"; genomeframe.innerHTML += "<input type='hidden' name='brief' value='true' />"; genomeframe.innerHTML += "<input type='hidden' name='url' value='" + document.location.href + "' />"; genomeframe.innerHTML += "<textarea style='visibility:hidden;position:fixed;top:75%;left:25%;' name='text'>"+document.body.innerHTML.replace(/\<br\>/g,"<br />")+"</textarea></form>"; document.body.appendChild(genomeframe); document.getElementById("genomesubmit").submit(); } else { GM_xmlhttpRequest( {method:"POST",url: "http://lueshi.dontexist.net/genome/data/input/",headers:{"Content-Type":"application/x-www-form-urlencoded"},data:"brief=true&url=" + encodeURIComponent(currentpage) + "&text=" + encodeURIComponent(document.body.innerHTML.replace(/\<br\>/g,"<br />")),onload: function(details){if(document.location.href.match(/(map|rank|profile|guild|base|scanners)/)) {document.body.appendChild(genomeBlock);document.getElementById("genomeLink").innerHTML=details.responseText;}}});}}function delButton() { gobutton = document.getElementById("helperLink"); gobutton.parentNode.removeChild(gobutton);}function finishHelping() { displayData(0); gobutton = document.getElementById("helperLink"); if((navigator.appName).match(/Opera/i) != undefined) { gobutton = document.getElementById("helperLink"); setTimeout("gobutton.outerHTML = ''",10); } else { setTimeout(delButton(),10); }}function toSeconds(time) { time.match(/(\d{1,2}):(\d{1,2}):(\d{1,2})/i); hours = RegExp.$1; minutes = RegExp.$2; seconds = RegExp.$3; return((hours*3600) + (minutes*60) + (seconds*1));}function enhanceScanners() { scannerframe = document.createElement("table"); scannerframe.width = "800"; scannerframe.align = "center"; scannerframe.innerHTML += "<tr><th colspan='4' align='center'>Enhance Scanners</th></tr>" + "<tr><td>Galaxies: <input type='text' id='galaxies' /></td><td>Guilds (ID #): <input type='text' id='guilds' /></td><td>" + "<input type='checkbox' id='enemies'>Enemies</td><td><input type='submit' id='scannerrequest' /></td></tr>"; document.body.appendChild(scannerframe); document.addEventListener ("click", function(event) { if(event.target == document.getElementById("scannerrequest")) { getScanners();} }, true);}function getScanners() { gal = document.getElementById("galaxies").value; galurl = "galaxy="+encodeURIComponent(gal); guilds = document.getElementById("guilds").value; guildurl = "&guild="+encodeURIComponent(guilds); enemies = document.getElementById("enemies").checked; if(!enemies) enemies = ""; url = "http://lueshi.dontexist.net/genome/data/search/scanner/?" + galurl + guildurl + enemies; exists = document.getElementById("scannerframe"); if(exists != undefined) { exists.src = url + "&brief=True"; return; } scannerframe2 = document.createElement("table"); scannerframe2.width = "800"; scannerframe2.align = "center"; scannerframe2.innerHTML = "<iframe id='scannerframe' style='width:800;height:768' src='"+url+"&brief=True'></iframe>"; document.body.appendChild(scannerframe2);}function addEmpireSortLinks(){ table = document.getElementsByTagName("table")[3]; table.rows[1].cells[4].innerHTML = "<a href='' id='sortByConstructionLink'>Construction</a>"; table.rows[1].cells[5].innerHTML = "<a href='' id='sortByProductionLink'>Production</a>"; table.rows[1].cells[6].innerHTML = "<a href='' id='sortByResearchLink'>Research</a>"; function listener(event) { if (event.target == document.getElementById("sortByConstructionLink")) { event.preventDefault(); sortEmpireBases(2); } else if (event.target == document.getElementById("sortByProductionLink")) { event.preventDefault(); sortEmpireBases(3); } else if (event.target == document.getElementById("sortByResearchLink")) { event.preventDefault(); sortEmpireBases(4); } } document.addEventListener("click", listener, true);}function sortEmpireBases(sortby){ table = document.getElementsByTagName("table")[3]; tbody = table.firstChild; bases = []; for (i = 2; i < table.rows.length; i += 2) { t = table.rows[i+1].cells[sortby].getAttribute("title"); if (t == undefined) t = 0; else t = parseInt(t); bases.push([table.rows[i], table.rows[i+1], t]); } bases.sort(function(a, b) { return a[2]-b[2]; }); for (i = 0; i < bases.length; i++) { tbody.appendChild(bases[i][0]); tbody.appendChild(bases[i][1]); }}function updateLocationCache(location, basename){ cache = GM_getValue(server+"_locationCache", ""); cache = cache.split(/;/); entry = [location, basename].join("/"); if (cache.indexOf(entry) == -1) { if (cache.unshift(entry) > 5) { cache.pop(); } } cache = cache.join(";"); GM_setValue(server+"_locationCache", cache);}function readLocationCache(){ cache = GM_getValue(server+"_locationCache", ""); cache = cache.split(/;/); cache = cache.map(function(x) { a = x.split("/"); if (a.length == 1) a.push(''); return a; }); return cache;}function updateLocationCacheFromMapPage(location){ basename = ""; tables = document.getElementsByTagName("table"); for (i = 0; i < tables.length; i++) { t = tables[i]; if (t.rows[0].cells[0].textContent == "Base") { basename = t.rows[2].cells[0].firstChild.textContent; } } updateLocationCache(location, basename);}function updateLocationCacheFromBasePage(){ location = basename = ""; tables = document.getElementsByTagName("table"); for (i = 0; i < tables.length; i++) { t = tables[i]; if (t.rows.length > 0 && t.rows[0].cells.length > 1 && t.rows[0].cells[1].textContent == "Location") { if (t.getAttribute("class") == "base_top") { location = t.rows[1].cells[0].textContent; } else { location = t.rows[1].cells[1].textContent; } } else if (t.getAttribute("class") == "base") { basename = t.rows[0].cells[1].textContent; if (basename.substr(basename.length-2) == " \u00A9") basename = basename.substr(0, basename.length-2); } } updateLocationCache(location, basename);}function addCachedLocationsMoveMenu(){ cache = readLocationCache(); if (cache.length == 0) return; tables = document.getElementsByTagName("table"); t = tables[tables.length-1]; r = t.rows[t.rows.length-1]; hasOccs = (r.cells[2].textContent != ""); small = r.cells[2].firstChild; if (hasOccs) { br = document.createElement("br"); small.insertBefore(br, small.firstChild); headline = document.createTextNode("Occupations:"); small.insertBefore(headline, small.firstChild); for (i = 0; i < 3; i++) { br = document.createElement("br"); small.insertBefore(br, small.firstChild); } } for (i = cache.length-1; i >= 0; i--) { entry = cache[i]; link = document.createElement("a"); link.setAttribute("href", "javascript:fastloc('" + entry[0] + "');"); if (entry[1] == "") link.textContent = entry[0]; else link.textContent = entry[1] + " (" + entry[0] + ")"; br = document.createElement("br"); small.insertBefore(link, small.firstChild); small.insertBefore(br, small.firstChild); } headline = document.createTextNode("Recent locations:"); small.insertBefore(headline, small.firstChild);}//########################## STARTUP FUNCTIONS #########################\\function startHelping () { if(currentpage.match(/empire.aspx\?view=technologies/)) { showMyTech(); } else if(currentpage.match(/base.aspx\?base=\d{1,20}&view=structures/)) { adviseMyBaseTwo(); } else if(currentpage.match(/base.aspx\?base=\d{2,20}&view=production/)) { adviseProduction() } else if(currentpage.match(/loc=[A-Z]\d{2}:\d{2}:\d{2}$/)) { showTheDebris(); } else if(currentpage.match(/base.aspx\?base=\d{1,20}$/) || currentpage.match(/base.aspx\?base=\d{1,20}&view=$/)) { estimatePillage(); } else if(currentpage.match(/empire.aspx\?view=bases_capacities/)) { adviseCapacity(); }}function init() { if(currentpage.match(/scanners/)) { if(currentpage.match(/alpha/)) { enhanceScanners(); } } if(currentpage.match(/account.aspx$/)) { table = document.getElementsByTagName("table"); for(x=0;x<table.length;x++) { if(table[x].innerHTML.match(/history/i)) { table = table[x].childNodes[0]; aehelperuplink = "<tr><th colspan='2'><div align='center'><a href='http://lueshi.dontexist.net/aehelper.user.js'>Update AEHelper</a></div></th></tr>"; table.innerHTML = aehelperuplink + table.innerHTML; } } } if(currentpage.match(/\.com\/$/) || currentpage.match(/forum/)){ return; } if(!(currentpage.match(/combat/))){ animateTimer(); } if(currentpage.match(/loc=[A-Z]\d{2}:\d{2}:\d{2}$/)){ showTheDebris(); } if(currentpage.match(/base.aspx\?base=\d{1,20}$/) || currentpage.match(/profile.aspx\?player=\d{1,20}$/) || currentpage.match(/base.aspx\?base=\d{1,20}&view=$/)){ if(currentpage.match(/alpha/)) { genomeLink(); } } prepHelper(); if (currentpage.match(/empire\.aspx\?view=technologies/) || currentpage.match(/base\.aspx\?base=\d{1,20}(&view=)?/) || currentpage.match(/capacities/)){ if(currentpage.match(/base.*(trade|research)/i)) return; helperBlock = document.createElement("div"); helperBlock.innerHTML = "<a style='display:block;background:#333;position:fixed;top:0;left:0;padding:5px;text-align:center;' id='helperLink'>Helper</a>"; document.body.insertBefore(helperBlock, document.body.firstChild); document.addEventListener ("click", function(event) { if(event.target == document.getElementById("helperLink")) { startHelping();} }, true); } if (currentpage.match(/empire\.aspx$/)) { addEmpireSortLinks(); } m = currentpage.match(/map\.aspx\?loc=([A-Z]\d\d:\d\d:\d\d:\d\d)$/); if (m) { updateLocationCacheFromMapPage(m[1]); } if (currentpage.match(/base\.aspx\?base=\d{1,20}$/)) { updateLocationCacheFromBasePage(); } if (currentpage.match(/fleet\.aspx\?fleet=\d{1,20}&view=move$/)) { addCachedLocationsMoveMenu(); }}init();