// ==UserScript==
// @name Explore Script
// @version 0.3
// @description Warring Factions Explore Script
// @author Kevin Schlosser
// @match http://*.war-facts.com/fleet.php*
// @match http://*.war-facts.com/fleet/*
// @require https://code.jquery.com/jquery-2.1.4.min.js
// @grant none
// @namespace https://gf.qytechs.cn/users/14655
// ==/UserScript==
//Configuration Options:
// Change this if you wish to exclude Fleets whose names contain the excludeString from being auto Selected as next explorer.
var useExcludeString = false;
// Change this to what you would like to put into a fleet's name in order to exclude it from being auto selected.
var excludeString = "#NotAuto#";
// Change this if you wish to auto Select Fleets as next explorer ONLY if their names contain the includeString.
var useIncludeString = false;
// Change this to what you would like to put into a fleet's name in order to include it into being auto selected.
var includeString = "#Auto#";
window.setTimeout(main,50);
var explorerRegex = /Explorer/g;
var isExplorer = explorerRegex.test(document.getElementById('fleetClass').innerText);
var base = window.location.href;
var fleetIdRegex = /fleet.php.*fleet=(\d+)|fleet\/(\d+)/g;
var match = fleetIdRegex.exec(base);
var fleetNumber = match[1] === undefined ? match[2] : match[1];
var xmlhttp = new XMLHttpRequest();
var perimeterScan;
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
perimeterScan = xmlhttp.responseText;
var dom = document.createElement('html');
dom.innerHtml = perimeterScan;
dom.getElementsByTagName('table');
var el = $( '<div></div>' );
el.html(perimeterScan);
$('table', el);
document.getElementById('missionData').appendChild($('table', el)[1]);
}
};
if (isExplorer) {
xmlhttp.open("GET", 'http://www.war-facts.com/extras/scan.php?fleet='+fleetNumber, true);
xmlhttp.send();
}
function main() {
if (isExplorer) {
var info = document.getElementById('navData').getElementsByTagName('div')[4];
var infoSpan = info.getElementsByTagName('span')[0];
// not containing world in the span.
var isAtSystemEntrance = ! (document.evaluate("//text()[contains(.,'World:')]", infoSpan, null, XPathResult.BOOLEAN_TYPE, null).booleanValue);
//alert("Is explorer = " + isExplorer);
//alert("Is at system Entrance = " + isAtSystemEntrance);
var currentPlanet = info.getElementsByTagName('a')[0].innerHTML;
//alert(currentPlanet);
var optionGroup = document.getElementById('target1');
if (optionGroup === null) {
window.setTimeout(main,50);
return;
}
optionGroup = optionGroup.getElementsByTagName('optgroup')[0];
optionGroup = optionGroup.getElementsByTagName('option');
var i = 0 , found = false, optionsLength = optionGroup.length;
var nextPlanetOption, finishedSystem = false;
//if PlanetLess system
if (optionsLength === 0 ) {
// alert("Planetless System");
found = true;
finishedSystem = true;
} else if (isAtSystemEntrance){ //if I am at system entrance
// alert("At System Entrance");
found = true;
nextPlanetOption = optionGroup[0].value;
}
// If I am at a planet, Find next planet through the local target option list
while ( (i < optionsLength) && (found === false) ) {
if (optionGroup[i].innerHTML == currentPlanet ){
found = true;
if ( i == optionsLength -1 ){
finishedSystem = true;
} else {
nextPlanetOption = optionGroup[i+1].value;
}
}
i++;
}
if (finishedSystem) {
// alert("Inside finished System");
document.getElementById('missionData').innerHTML += '<input class = "greenbutton darkbutton" type="button" id="nextPlanetButton" value = "Done" onclick="openStarMap()" />';
document.getElementById('nextPlanetButton').addEventListener('click', openStarMap, false);
} else {
// alert("Inside NOT finished System");
document.getElementById('missionData').innerHTML += '<input class = "greenbutton darkbutton" type="button" id="nextPlanetButton" value = "Next Planet" />';
document.getElementById('nextPlanetButton').addEventListener('click', function() {
jQuery('#target1').val(nextPlanetOption).trigger ('change');
window.setTimeout(launchFleet,100);
}, false);
//selectNextPlanet(nextPlanetOption);
//launchFleet();
//autoSelectNextExplorer();
}
}
}
var nextPlanetOption;
function launchFleet(){
getMission('launch'); //Launch Fleet
window.setTimeout(autoSelectNextExplorer, 100);
}
function openStarMap(){
var starMapLink;
var info = document.getElementById('navData').getElementsByTagName('div')[4];
var infoSpan = info.getElementsByTagName('span')[0];
var isAtSystemEntrance = ! (document.evaluate("//text()[contains(.,'World:')]", infoSpan, null, XPathResult.BOOLEAN_TYPE, null).booleanValue);
if (isAtSystemEntrance){
starMapLink = document.getElementById('navData').getElementsByTagName('div')[10].getElementsByTagName('a')[0].href;
} else {
starMapLink = document.getElementById('navData').getElementsByTagName('div')[11].getElementsByTagName('a')[0].href;
}
starMapLink = starMapLink.substring(19, starMapLink.length - 3 ); //Keep only the link, throw away the functions
// mapWin is war-facts.com function to open javascript map
mapWin(starMapLink);
}
function selectNextPlanet(nextPlanetOption){
jQuery('#target1').val(nextPlanetOption).trigger ('change');
window.setTimeout(launchFleet,100);
}
function autoSelectNextExplorer(){
var explorerList = document.getElementById('fc_Explorer').children;
var index = 0;
var explorerListLength = explorerList.length;
while (index < explorerListLength) {
// alert("Index = " +index);
if (explorerList[index].children[0].style.color == "rgb(204, 204, 204)") {
var link = explorerList[index].children[0].href;
var fleet_with_id = link.substr(link.indexOf("fleet="));
var name = explorerList[index].children[0].innerHTML;
var current_window = window.location.href;
// alert("Fleet with name " + name +" and with id " + fleet_with_id);
if (
( ( !useIncludeString) || ( name.indexOf(includeString) > -1 ) ) //If not using include string or String is in name
&& ( ( !useExcludeString) || ( name.indexOf(excludeString) == -1 ) ) //If not using exclude string or String is NOT in name
&& ( current_window.indexOf(fleet_with_id) == -1 )//Make sure we are not chosing ourselve as this fleet is still "white"
)
{
index = explorerListLength; //To make sure if load doesn't happen immediately it stops running through fleet list
window.open(link, "_self");
}
}
index++;
}
}
// Replace the site's getMission function, so that when launch is pressed, it autoSelectsNextExplorer
var oldgetMission = window.getMission;
window.getMission = function getMission(action, dType) {
var executed = new oldgetMission(action, dType);
if (action == 'launch'){
var classificationNode = document.getElementById('fleetClass');
var isExplorer = document.evaluate("//text()[contains(.,'Explorer') or contains(.,'Sentry') or contains(.,'Probe Rush')]", classificationNode, null, XPathResult.BOOLEAN_TYPE, null).booleanValue;
window.setTimeout(autoSelectNextExplorer,250);
}
};