// ==UserScript==
// @name Planets.nu - improved Ship List View
// @description Miscellaneous Improvements to the Ship List View
// @include http://planets.nu/home
// @include http://play.planets.nu/*
// @include http://planets.nu/*
// @include http://test.planets.nu/*
// @include https://planets.nu/*
// @include https://test.planets.nu/*
// @version 2.92
// @namespace https://greasyfork.org/users/2860
// ==/UserScript==
// 0.1 - Adds back Ship Name. Color codes HYPing ship names depending on travel distance and fc set.
// 0.2 - Adds destination field. Now can activate/deactivate in the settings screen.
// 0.3 - Checks for local warp well being in first leg of multi-leg journey. Displays what Planet's Warpwell its going to
// 0.4 - Checks for ships moving long distances at warp 1. fixes check for HYP so it looks at first destination, not just final.
// 0.5 - Trying out ToUpper function to avoid case sensitivity. Add check for NTP and BDM code
// 0.6 - Corrects Fleet view bug. Adds color coded cloaking status to ship name
// 0.7 - Checks for ships that are just outside the Warp Well (3 to 5 LY from planet)
// 0.8 - Looks for ships going warp 7 or warp 8, but think they're going like a warp 9 engine
// 0.9 - Updated for new site. New message for HYP ships with FC set, but no movement
// 1.0 - Updated for v3 API.
// 1.1 - New total ship view
// 1.21 - Adds current location, dynamic filters, can jump to owned ship
// 1.22 - Buttons are now dynamic as well (display Show or Hide depending on current state)
// 1.3 - Added new set fleet destination button in Ship/Fleet view.
// 1.31 - Changed Fleet to Fleet/Command. Added in ability to change FC from F/C view.
// 1.32 - Added in Checkbox control in F/C
// 1.33 - Adds listing in all views of what the current ship mission is
// 1.4 - Can now select ship mission from dropdown in Fleet/Command view. Adds Total Ship View to play.planets.nu (v3 API) client.
// 1.41 - Minor fixes for play.planets.nu client
// 1.42 - Fleet commands now sets all waypoints and updates destination text. Will no longer allow cloak to be set improperly. Can click on left side of Fleet/Commmand view to jump to ship
// 1.5 - Renamed Fleet/Command to Commmand. Command view applies to all ships at location, and will popup how many ships are low on fuel. New fleet view added (v2 only in 1.5.0)
// 1.6 - Fleet view now mirrors all functionality of command view. Will display fleet/flagship only, and can click on a fleet to show members. Clicking on fleet member will jump to that ship.
// 1.7 - Fleet view's set destination command only effect ships in that fleet. Fixed Fleet headers. Fleet lines are now bolded (ship lines regular font)
// 1.8 - Checks pillage and RGA missions for potential problems
// 1.81 - Added fleet view to v3 client
// 1.82 - added new check for warp well dance problems, adjusted distances for Warp 7/8 movement checks
// 1.9 - Adds "Whats interesting view" (only in new client currently)
// 2.0 - Adds "Whats interesting view" to all clients. Checks for gravitonic acceleration for speed/distancec
// 2.1 - Checks now for towing unfueled enemy ships to planets set to NUK
// 2.2 - Checks for ships running out of fuel - engine highlighted in orange (or red - if also too slow for destination)
// 2.3 - Improved fleet view/added integration for location based fleets
// 2.4 - Checks for Interception of Enemy ships without PE set
// 2.51 - Better distance checks (should go to 0.5 beyond the official distance), will check for warp 9 at just above limit (going 81.51 to 88 ly)
// 2.6 - Added new check for cloaked ships with PE set. This defaults to off, and can be activated under Settings.
// 2.7 - Misc fixes. New destination focused view.
// 2.8 - removes old planets.nu code
// 2.9 - improves HYP handling. Adds Orange coloring for HYPing with less than 50 fuel. Also removed false positives for standard move checks that picked up HYPing ships
// 2.9.1 - Fix logic for intercept to remove false positive cases
// 2.9.2 - Updated to work with new urls
function wrapper () { // wrapper for injection
var modShipList = true;
var modShipListCloakPE = false;
var showShip = [true,true,true,true,true,true,true,true,true,true,true,true];
oldShowShips = vgapDashboard.prototype.showShips;
var fleetNames2=new Array();
var fleetFlagships2=new Array();
var fleetSizes2=new Array();
var showFleet=new Array();
var showDestination = 0;
vgapDashboard.prototype.showShips = function (view) {
if (modShipList==false)
oldShowShips.apply(this,arguments);
//alert("working");
else if (vgaPlanets.prototype.version>=3)
{
showDestination = get_cookie("showDestination");
//alert(showDestination);
if (showDestination==null) showDestination=0;
modShipListCloakPE=get_cookie("modShipListCloakPE");
vgap.playSound("button");
vgap.closeSecond();
this.content.empty();
//filter messages
var html = "";
if (!view)
view = 0;
var filterMenu = $("<ul class='FilterMenu'></ul>").appendTo(this.content);
$("<li " + (view == 0 ? "class='SelectedFilter'" : "") + ">Status</li>").tclick(function() { vgap.dash.showShips(0); }).appendTo(filterMenu);
$("<li " + (view == 1 ? "class='SelectedFilter'" : "") + ">Cargo View</li>").tclick(function() { vgap.dash.showShips(1); }).appendTo(filterMenu);
$("<li " + (view == 2 ? "class='SelectedFilter'" : "") + ">Command View</li>").tclick(function() { vgap.dash.showShips(2); }).appendTo(filterMenu);
$("<li " + (view == 3 ? "class='SelectedFilter'" : "") + ">Notes View</li>").tclick(function() { vgap.dash.showShips(3); }).appendTo(filterMenu);
//---------------START NEW CODE-----------------------
$("<li " + (view == 4 ? "class='SelectedFilter'" : "") + ">Complete Ship List</li>").tclick(function() { vgap.dash.showShips(4); }).appendTo(filterMenu);
$("<li " + (view == 5 ? "class='SelectedFilter'" : "") + ">Fleet View (experimental) </li>").tclick(function() { vgap.dash.showShips(5); }).appendTo(filterMenu);
$("<li " + (view == 6 ? "class='SelectedFilter'" : "") + ">What's Interesting </li>").tclick(function() { vgap.dash.showShips(6); }).appendTo(filterMenu);
//---------------END NEW CODE-----------------------
//loop through all ships and show the ones owned by this player
html += "<div class='DashPane' style='height:" + ($("#DashboardContent").height() - 30) + "px;'>";
//---------------START NEW CODE-----------------------
if (view==5)
{
html += "<tr><td><button type='button' class='TestButton' onClick='setShowDestination(1);vgap.dash.showShips(5);'> Shows Ships with Same Destination </button></td><td><button type='button' class='TestButton' onClick='setShowDestination(0);vgap.dash.showShips(5);'> Show Ships at Current Location </button></td></tr>";
}
if (view==4)
{
//html += "<button type='button' class='TestButton' onClick='changeOne();'> Display 1 </button>";
"<table rules='all' border='1' width='100%'>";
if(showShip[0]==true)
html += "<tr><td><button type='button' class='TestButton' onClick='changeShow(0);'> Hide Unknown </button></td>"
else
html += "<tr><td><button type='button' class='TestButton' onClick='changeShow(0);'> Display Unknown </button></td>"
for (var i=1;i<12;i++)
{
if(showShip[i]==true)
html += "<td><button type='button' class='TestButton' onClick='changeShow("+i+");'> Hide " + i + " </button></td>"
else
html += "<td><button type='button' class='TestButton' onClick='changeShow("+i+");'> Display " + i + " </button></td>"
}
}
html += "</tr></table>";
//---------------END NEW CODE-----------------------
html += "<table id='ShipTable' align='left' border='0' width='100%' style='cursor:pointer;'><thead>";
//---------------START NEW CODE-----------------------
if (view==5)
{
//html += "<th align='left'>Fleet Name</th><th align='left'>Fleet Size</th><th align='left'> Flagship Hull</th><th align='left'> Flagship Id</th><th align='left'>Flagship Hull</th><th align='left'>Flagship Name</th><th title='Destination' align='left'>Destination</th><th title='Current Coordinates' align='left'>X-Y</th><th title='Distance to Target' align='left'>D</th><th title='Warp Speed' align='left'>W</th>";
html+="<th align='left'>Fleet Name</th><th align='left'>Fleet Size</th><th align='left'>FS Destination</th><th align='left'>Hull</th><th align='left'>ID</th><th align='left'>Shipname</th><th align='left'>Mission</th>";
html += "<th title='Battle value' align='left'>Battle Value</th><th title = 'Primary Enemy' align='left'>PE</th><th title='Current Coordinates' align='left'>X-Y</th><th title='Distance to Target' align='left'>D</th><th title='Warp Speed' align='left'>W</th><th title='Neutronium Fuel' align='left'>N</th>";
//---------------START NEW CODE-----------------------
html += "<th title='Friendly Code' align='left'>FC</th>";
html += "<th title='Set Fleets Destination to This Ships Destination' align='left'>Set Fleet Dest</th>";
html += "<th title='Ready Checkbox Status' align='left'>R</th>";
}
else if (view==4)
html += "<th align='left'>Race ID</th><th align='left'>Race Name</th><th align='left'>Id</th><th align='left'>Hull</th><th title='Ship Name' align='left'>Ship Name</th><th title='Destination' align='left'>Destination</th>";
else if (modShipList)
html += "<th align='left'>Hull</th><th align='left'>Id</th><th title='Ship Name' align='left'>Ship Name</th><th title='Destination' align='left'>Destination</th><th title='Ship Mission' align='left'>Mission</th>";
else //original code
//---------------END NEW CODE-----------------------
html += "<th align='left'>Hull</th><th align=left>Id</th>";
if (view == 1)
html += "<th title='Megacredits' align='left'>MC</th><th title='Supplies' align='left'>S</th><th title='Neutronium' align='left'>N</th><th title='Duranium' align='left'>D</th><th title='Tritanium' align='left'>T</th><th title='Molybdenum' align='left'>M</th><th title='Torpedos or Fighters' align='left'>Ammo</th>";
if ((view == 0)||(view==6)) {
html += "<th title='Hull' align='left'>Hull</th><th title='Engine' align='left'>Engine</th><th title='Beams' align='left'>Beams</th><th align='left'>Torps/Bays [Ammo]</th><th title='Damage' align='left'>Dam</th><th title='Crew' align='left'>Crew</th><th title='Friendly Code' align='left'>FC</th><th title='Ready Checkbox Status' align='left'>R</th>";
}
if (view == 2)
{
html += "<th title='Battle value' align='left'>Battle Value</th><th title='Current Coordinates' align='left'>X-Y</th><th title='Target Coordinates' align='left'>Tx-Ty</th><th title='Distance to Target' align='left'>D</th><th title='Warp Speed' align='left'>W</th><th title='Neutronium Fuel' align='left'>N</th>";
//---------------START NEW CODE-----------------------
html += "<th title='Friendly Code' align='left'>FC</th>";
html += "<th title='Set Fleets Destination to This Ships Destination' align='left'>Set Fleet Dest</th>";
html += "<th title='Ready Checkbox Status' align='left'>R</th>";
//---------------END NEW CODE------------------
}
if (view == 3)
html += "<th title='Notes' align='left'>Notes</th><th title='Ready Checkbox Status' align='left'>R</th>";
//---------------START NEW CODE-----------------------
if (view==4)
html += "<th title='Current Location' align='left'>Location</th><th title='Hull' align='left'>Hull</th><th title='Speed' align='left'>Speed</th><th title='Friendly Code' align='left'>FC</th>";
//html += "<th title='Damage' align='left'>Dam</th><th title='Crew' align='left'>Crew</th><th title='Loaded Torps or Fighters' align='left'>Ammo</th";
//---------------END NEW CODE-----------------------
html += "</thead><tbody id='ShipRows' align=left >";
html += "</tbody></table>";
html += "</div>";
this.pane = $(html).appendTo(this.content);
for (var i = 0; i < vgap.myships.length; i++)
{
var ship = vgap.myships[i];
var hull = vgap.getHull(ship.hullid);
var dam = (ship.damage > 0 ? "<span class='WarnText'>" + ship.damage + "%</span>" : ship.damage + "%");
var crew = (ship.crew < hull.crew ? "<span class='WarnText'>" + ship.crew + "</span>" : ship.crew);
var show=0;
var temphtml = "";
var html = "";
//-----------------START NEW CODE------------------
if ((view!=4)&&(view!=5))
{
if (modShipList)
{
var hyp=0;//0=none, 1=yellow, 2=red, 3=green, 4=blue
var cloak=0;//0=none, 1=yellow, 2=red, 3=green, 4=blue
var destination="Deep Space";
var dest = vgap.getDest(ship);
var distance = Math.dist(ship.x, ship.y, ship.targetx,ship.targety);
if (view==2)
temphtml += '<tr><td onclick="vgap.map.selectShip(' + ship.id + ');"><img class="TinyIcon" src="' + hullImg(ship.hullid) + '"/></td><td onclick="vgap.map.selectShip(' + ship.id + ');">' + ship.id + '</td>';
else
temphtml += '<tr><td><img class="TinyIcon" src="' + hullImg(ship.hullid) + '"/></td><td>' + ship.id + '</td>';
if (hull.cancloak)
{
if (ship.iscloaked)
{
if (ship.mission == 9 || (vgap.player.raceid == 3 && ship.mission == 8))
cloak=3 //cloaked now, will be cloaked.
else
cloak=1 //cloaked now, but won't be cloaked.
}
else if (ship.mission == 9 || (vgap.player.raceid == 3 && ship.mission == 8))
cloak=4; //not cloaked now, but will be cloaked
else
cloak=2; //not cloaked now, won't be cloaking
}
if ((hull.cancloak)&&(ship.mission == 9 || (vgap.player.raceid == 3 && ship.mission == 8))&&ship.enemy&&(modShipListCloakPE==true)) cloak=5;
if ((ship.hullid==87)||(ship.hullid==77)||(ship.hullid==51))
{
if ((ship.friendlycode=="HYP")||(ship.friendlycode=="hyp")||(ship.friendlycode.toUpperCase()=="HYP"))
{
if (distance==0) hyp=5;
else if ((distance<20) && (ship.neutronium>=50)) hyp=1;
else if (((distance<340) || (distance>360))&&(ship.neutronium>=50)) hyp=2;
else if ((distance>=340) && (ship.neutronium<50)) hyp=6
else hyp=3;
}
else
{
if ((distance>=340)&&(distance<=360))
hyp=2;
else
hyp=4;
}
}
if (hyp>0) switch (hyp)
{
case 1: temphtml+="<td style='color:yellow' title='FC is HYP and destination less than 20 LY'>";
show=1;
break;
case 2: temphtml+="<td style='color:red' title='Warning: Check Friendly Code and Destination Distance'>";
show=1;
break;
case 3: temphtml+="<td style='color:green' title='No HYP problems seen'>";
break;
case 4: temphtml+="<td style='color:lightblue' title='Ship not set to HYP'>";
break;
case 5: temphtml+="<td style='color:aqua' title='Ship set to HYP, no destination set'>";
break;
case 6: temphtml+="<td style='color:orange' title='Ship set to HYP with valid destination, but not enough fuel'>";
show=1;
break;
default: temphtml+="<td>";
}
else if (cloak>0) switch (cloak)
{
case 1: temphtml+="<td style='color:yellow' title='Ship is cloaked now. No cloak mission set for next turn'>";
break;
case 2: temphtml+="<td style='color:red' title='Ship is uncloaked now. No cloak mission set for next turn'>";
break;
case 3: temphtml+="<td style='color:green' title='Ship is cloaked now. Cloak mission is set for next turn'>";
break;
case 4: temphtml+="<td style='color:lightblue' title='Ship is uncloaked now. Cloak mission set for next turn'>";
break;
case 5: temphtml+="<td style='color:orange' title='Ship is set to cloak, and PE is set'>";
show=1;
break;
default: temphtml+="<td>";
}
else temphtml+="<td>";
temphtml += ship.name+"</td>";
var output=betterWarpWell(dest.x,dest.y);
if (output!="0")
destination = output;
if (ship.target != null)
destination = ship.target.name.substr(0, 20);
var hypCheck=0;
if (((ship.hullid==87)||(ship.hullid==77)||(ship.hullid==51)) && (ship.friendlycode.toUpperCase()=="HYP")) hypCheck=1;
if (output.search("Outside ")!=-1)
{
temphtml+="<td style='color:orange' title='Destination is outside the Warp Well'>" + destination + "</td>";
show=1;
}
else if (ship.waypoints.length>0)
{
if ((vgap.warpWell(ship.targetx,ship.targety))&&(distance<=3))
{
temphtml+="<td style='color:red' title='First waypoint of multi-leg journey is local warpwell'>" + destination + "</td>";
show=1;
}
else if ((distance>3)&&(ship.warp==1)&&(hypCheck==0))
{
temphtml+="<td style='color:yellow' title='Ship is trying to go more than 3 LY at warp 1 '>" + destination + "</td>";
show=1;
}
else if ((output.search("Warpwell")!=-1)&&(ship.warp>1)&&(distance<2) && (hypCheck==0))
{
temphtml+="<td style='color:orange' title='Ship is trying to move 1 LY in a warpwell at greater than warp 1 '>" + destination + "</td>";
show=1;
}
else
temphtml+= "<td>" + destination + "</td>";
}
else if ((distance>3)&&(ship.warp==1)&& (hypCheck==0))
{
temphtml+="<td style='color:yellow' title='Ship is trying to go more than 3 LY at warp 1 '>" + destination + "</td>";
show=1;
}
else if ((output.search("Warpwell")!=-1)&&(ship.warp>1)&&(distance<2)&& (hypCheck==0)){
temphtml+="<td style='color:orange' title='Ship is trying to move 1 LY in a warpwell at greater than warp 1 '>" + destination + "</td>";
show=1;
}
else
temphtml+= "<td>" + destination + "</td>";
var SelfAssault=0;
if ((vgap.player.raceid==4) || (vgap.player.raceid==10))
if (ship.mission == 8)
{
var AssaultTarget=idWarpWell(dest.x,dest.y);
var targetPlanet;
if (AssaultTarget!=-1)
targetPlanet = vgap.getPlanet(AssaultTarget);
if ((targetPlanet != null) && (targetPlanet.ownerid == ship.ownerid))
SelfAssault=1;
else if ((targetPlanet != null) && vgap.allied(targetPlanet.ownerid))
SelfAssault=2;
else if (targetPlanet != null)
SelfAssault=3;
}
var towproblem=0;
if (ship.mission == 6 && ship.mission1target != 0)
{
var towship = vgap.getShip(ship.mission1target);
var AssaultTarget=idWarpWell(dest.x,dest.y);
if ((towship.neutronium==0)&& (AssaultTarget!=-1))
{
var targetPlanet= vgap.getPlanet(AssaultTarget);
var friendlycode=targetPlanet.friendlycode;
if (friendlycode.toUpperCase()=="NUK")
towproblem=1;
}
}
var interceptProblem=0;
if (ship.mission == 7 && ship.mission1target != 0)
{
var missionTarget = vgap.getShip(ship.mission1target);
if (ship.enemy != missionTarget.ownerid) interceptProblem=1;
if (vgap.allied(missionTarget.ownerid)) interceptProblem=0;
if (missionTarget.ownerid==ship.ownerid) interceptProblem=0;
}
if (view!=2)
{
var mission_list=returnMissionArray(ship);
if (SelfAssault==1)
{
temphtml+="<td style='color:red' title='Your ship is set to RGA/Pillage your own planet'>";
show=1;
}
else if (SelfAssault==2)
{
temphtml+="<td style='color:yellow' title='Your ship is set to RGA/Pillage an ally. Is that the best way to treat a friend?'>";
show=1;
}
else if (SelfAssault==3) temphtml+="<td style='color:green' title='Your ship is set to RGA/Pillage an enemy planet.'>";
else if (towproblem==1)
{
temphtml+="<td style='color:red' title='You are about to tow an unfueled ship to a planet set to NUK'>";
show=1;
}
else if (interceptProblem==1)
{
temphtml+="<td style='color:orange' title='You are intercepting an enemy ship without PE set'>";
show=1;
}
else temphtml +="<td>";
temphtml += mission_list[ship.mission] + "</td>";
}
}
//---------------END NEW CODE-----------------------
else //original code
temphtml += '<tr class="RowSelect" title="' + ship.name + '"><td><img class="TinyIcon" src="' + hullImg(ship.hullid) + '"/></td><td>' + ship.id + '</td>';
}
if (view == 1)
temphtml += "<td>" + ship.megacredits + "</td><td>" + ship.supplies + "</td><td>" + ship.neutronium + "</td><td>" + ship.duranium + "</td><td>" + ship.tritanium + "</td><td>" + ship.molybdenum + "</td><td>" + ship.ammo + "</td></tr>";
if ((view == 0)||(view == 6)) {
var hull = vgap.getHull(ship.hullid);
//---------------START NEW CODE-----------------------
if (modShipList)
{
var distance = Math.dist(ship.x, ship.y, ship.targetx,ship.targety);
var speed=vgap.getSpeed(ship.warp, ship.hullid);
var warp7=49;
var warp8=64;
var warp9=81;
if (ship.hullid == 44 || ship.hullid == 45 || ship.hullid == 46)
{
warp7=98;warp8=128;warp9=162;
}
var fuelCheck=0;
var speedCheck=0;
var hypCheck=0;
if (ship.neutronium<checkFuel(ship)) fuelCheck=1;
//if distance==(warp7+0.5)||(warp8+0.5)||(warp9+0.5) distance-=0.1;
if (((speed==warp8)&&((distance>(warp8+0.5))&&(distance<(warp9+0.5))))||((speed==warp7)&&((distance>(warp7+0.5))&&(distance<(warp9+0.5))))||((speed==warp9)&&((distance>(warp9+0.5))&&(distance<(warp9+8))))) speedCheck=1;
if (((ship.hullid==87)||(ship.hullid==77)||(ship.hullid==51)) && (ship.friendlycode.toUpperCase()=="HYP")) hypCheck=1;
if (fuelCheck==1 && speedCheck==1 && hypCheck==0)
{
temphtml += "<td>" + hull.name + "</td><td style='color:red' title='Ship does not have enough fuel to reach destination AND is moving too slow to reach destination in one turn. Check Speed/Destination and fuel'>" + vgap.getEngine(ship.engineid).name + "</td>" ;
show=1;
}
else if (fuelCheck==1 && hypCheck==0)
{
temphtml += "<td>" + hull.name + "</td><td style='color:orange' title='Ship does not have enough fuel to reach destination'>" + vgap.getEngine(ship.engineid).name + "</td>" ;
show=1;
}
else
if (speedCheck==1 && hypCheck==0)
{
temphtml += "<td>" + hull.name + "</td><td style='color:yellow' title='Ship moving too slow to reach destination in one turn, check speed/destination'>" + vgap.getEngine(ship.engineid).name + "</td>" ;
show=1;
}
else
temphtml += "<td>" + hull.name + "</td><td>" + vgap.getEngine(ship.engineid).name + "</td>";
if ((ship.friendlycode.toUpperCase()=="NTP") || (ship.friendlycode.toUpperCase()=="BDM"))
temphtml += "<td>" +(ship.beams > 0 ? vgap.getBeam(ship.beamid).name + " x" + ship.beams : "") + "</td><td>" + (ship.torps > 0 ? vgap.getTorpedo(ship.torpedoid).name + " x" + ship.torps : "") + (ship.bays > 0 ? " Bays x" + ship.bays : "") + (ship.bays > 0 || ship.torps > 0 ? " [" + ship.ammo + "]" : "") + "</td><td>" + dam + "</td><td>" + crew + "</td><td style='color:orange' title='Potentially Dangerous Friendly Code'>" + ship.friendlycode + "</td><td>" + (ship.readystatus > 0 ? (ship.readystatus == 1 ? "-" : "+") : "") + "</td>";
else
temphtml += "<td>" +(ship.beams > 0 ? vgap.getBeam(ship.beamid).name + " x" + ship.beams : "") + "</td><td>" + (ship.torps > 0 ? vgap.getTorpedo(ship.torpedoid).name + " x" + ship.torps : "") + (ship.bays > 0 ? " Bays x" + ship.bays : "") + (ship.bays > 0 || ship.torps > 0 ? " [" + ship.ammo + "]" : "") + "</td><td>" + dam + "</td><td>" + crew + "</td><td>" + ship.friendlycode + "</td><td>" + (ship.readystatus > 0 ? (ship.readystatus == 1 ? "-" : "+") : "") + "</td>";
}
else
//---------------END NEW CODE-----------------------
temphtml += "<td>" + hull.name + "</td><td>" + vgap.getEngine(ship.engineid).name + "</td><td>" + (ship.beams > 0 ? vgap.getBeam(ship.beamid).name + " x" + ship.beams : "") + "</td><td>" + (ship.torps > 0 ? vgap.getTorpedo(ship.torpedoid).name + " x" + ship.torps : "") + (ship.bays > 0 ? " Bays x" + ship.bays : "") + (ship.bays > 0 || ship.torps > 0 ? " [" + ship.ammo + "]" : "") + "</td><td>" + dam + "</td><td>" + crew + "</td><td>" + ship.friendlycode + "</td><td>" + (ship.readystatus > 0 ? (ship.readystatus == 1 ? "-" : "+") : "") + "</td>";
}
if (view == 2) {
var dest = vgap.getDest(ship);
var mission_list=returnMissionArray(ship);
temphtml += "<td><select id='Dropdown" + i + "' onChange='setMission(this)'>";//<option value='" + ship.mission + "'>" + mission_list[ship.mission] + "</option>";
for (var k=0;k<17;k++)
{
if (ship.mission==k)
temphtml+= "<option value='" + k + "' selected=>" + mission_list[k] + "</option>"
else
temphtml+= "<option value='" + k + "'>" + mission_list[k] + "</option>"
}
temphtml += "</select></td>";
//html += "<td>" + mission_list[ship.mission] + "</td>";
temphtml += "<td>" + vgap.getBattleValue(ship) + "</td><td>" + ship.x + "-" + ship.y + "</td><td>" + dest.x + "-" + dest.y + "</td><td>" + vgap.getTravelDist(ship).toFixed(1) + "</td><td>" + ship.warp + "</td><td>" + ship.neutronium + "</td>";
temphtml += "<td><input type='text' size='3' maxlength='3' id='Input"+i+"' onchange='setFC(this);' value='" + ship.friendlycode +"'/></td>";
temphtml += "<td><button type='button' id='Button"+i +"' onClick='setFleetDest(this);'>Set Flt Dest</button></td>";
if (ship.readystatus>0)
temphtml += "<td><input type='checkbox' id='Check"+i+"' checked='checked' onchange='setCB(this);'/></td>";
else
temphtml += "<td><input type='checkbox' id='Check"+i+"' onchange='setCB(this);'/></td>";
}
if (view == 3) {
var note = vgap.getNote(ship.id, 2);
if (note != null) {
temphtml += '<td>' + note.body.replace(/\n/g, "<br/>") + '</td>';
}
else {
temphtml += '<td></td>';
}
temphtml+="<td>" + (ship.readystatus > 0 ? (ship.readystatus == 1 ? "-" : "+") : "") + "</td>";
}
temphtml += "</tr>";
if ((view!=6) || (show==1))
html+=temphtml;
var select;
if (view==2||view==4||view==5)
select = function(id) { return function() {};};
else
select = function(id) { return function() { vgap.map.selectShip(id); }; };
$(html).click(select(ship.id)).appendTo("#ShipRows");
}
//---------------START NEW CODE-----------------------
if (view==4)
{
var colorsA =["#F0F8FF","#32CD32","#CD5C5C","#FFC0CB","#98FB98","#C0C0C0","#FFFF00","#EE82EE","#D3D3D3","#B0E0E6","#87CEFA","#7B68EE","#F4A460","#D2B48C","#FF6347","#F5DEB3","#F08080","#2F4F4F","#008080","#B22222","#808000","#9370DB","#00FF00","#4B0082","#D2B48C","#9ACD32", "#DAA520","#F0F8FF","#6B8E23","#FF4500"];
var colorsA2 =["#FFFFFF","#006400","#FF0000","#FF69B4","#00FA9A","#6A5ACD","#FFD700","#9400D3","#808080","#00CED1","#4169E1","#7B68EE","#A0522D","#87CEEB","#FF6347","#F5DEB3","#F08080","#2F4F4F","#008080","#B22222","#808000","#9370DB","#00FF00","#4B0082","#D2B48C","#9ACD32", "#DAA520","#F0F8FF","#6B8E23","#FF4500"];
var checkColor=null;
for (var m=0;m<30;m++)
{
var String="Race"+(m+1);
checkColor=get_cookie(String);
if (checkColor)
colorsA[m]=checkColor;
checkColor=null;
checkColor=get_cookie(String+"A");
if (checkColor)
colorsA2[m]=checkColor;
checkColor=null;
}
for (var j = 0; j < vgap.ships.length; j++)
{
//vgap.inspace
var ship = vgap.ships[j];
var hull = vgap.getHull(ship.hullid);
var player = vgap.getPlayer(ship.ownerid);
var race = vgap.getRace(player.raceid);
var color=colorsA[player.raceid-1];
var speed=vgap.getSpeed(ship.warp, ship.hullid);
var destination="Deep Space";
var location="Deep Space";
var dest = vgap.getDest(ship);
var damage="?";
var crew="?";
var ammo="?";
var locOutput=betterWarpWell(ship.x,ship.y);
var output=betterWarpWell(dest.x,dest.y);
if (output!="0")
destination = output;
if (ship.target != null)
destination = ship.target.name.substr(0, 20);
if (locOutput!="0")
location = locOutput;
if (ship.damage!=-1)
damage=ship.damage;
if (ship.crew!=-1)
crew=ship.crew;
if (ship.ammo!=-1)
ammo=ship.ammo;
if (showShip[player.raceid]==true)
{
if (player.raceid==vgap.player.id)
html += '<tr onclick="vgap.map.selectShip(' + ship.id + ');">';
else
html += "<tr>";
html += "<td style='color:"+ color +"'>" + player.raceid + "</td>";
html += "<td style='color:"+ color +"'>" + race.name + "</td>";
html += "<td style='color:"+ color +"'>" + ship.id + "</td>";
html += '<td><img class="TinyIcon" src="' + hullImg(ship.hullid) + '"/></td>'
html += "<td style='color:"+ color +"'>" + ship.name + "</td>";
html += "<td style='color:"+ color +"'>" + destination + "</td>";
html += "<td style='color:"+ color +"'>" + location + "(" + ship.x + "," + ship.y + ")" + "</td>";
html += "<td style='color:"+ color +"'>" + hull.name + "</td>";
html += "<td style='color:"+ color +"'>" + speed + "</td>";
//html += "<td style='color:"+ color +"'>" + damage + "</td>";
//html += "<td style='color:"+ color +"'>" + crew + "</td>";
//html += "<td style='color:"+ color +"'>" + ammo + "</td>";
//html += "<td style='color:"+ color +"'>" +ship.beams + "</td>";
html += "<td style='color:"+ color +"'>" +ship.friendlycode + "</td>";
html += "</tr>";
}
}
var select;
if (view==2||view==4)
select = function(id) { return function() {};};
else
select = function(id) { return function() { vgap.map.selectShip(id); }; };
$(html).click(select(ship.id)).appendTo("#ShipRows");
}
if (view==5)
{
var ShipID;
ShipID=get_cookie("currentShipID");
//html += "Ship ID to use as temporary fleet flagship (will show all ships in same location as fleet)";
html += "<tr><td><input type='text' id='InputID' title='Ship ID to use as temporary fleet flagship (will show all ships in same location as fleet)' onChange='setShipID(this);ShipID=this.value;vgap.dash.showShips(5);' value='" + ShipID +"'></td>";
var enteredShip=vgap.getShip(ShipID);
var player;
if (enteredShip!=null)
{
player = vgap.getPlayer(enteredShip.ownerid);
if (enteredShip.ownerid==vgap.player.id)
for (var count=0;count<vgap.myships.length;count++)
{
if((showDestination==0)&&(vgap.myships[count].x==enteredShip.x)&&(vgap.myships[count].y==enteredShip.y))
{
//alert("match");
var ship = vgap.myships[count];
var hull = vgap.getHull(ship.hullid);
var destination="Deep Space";
var dest = vgap.getDest(ship);
var output=betterWarpWell(dest.x,dest.y);
if (output!="0")
destination = output;
if (ship.target != null)
destination = ship.target.name.substr(0, 20);
var distance = Math.dist(ship.x, ship.y, ship.targetx,ship.targety);
var speed=vgap.getSpeed(ship.warp, ship.hullid);
var location="Deep Space";
//html+='<tr class="RowSelect" title="' + ship.name + '" onClick="changeShowFleet('+i+');" style="vertical-align:top; font-weight:bold;">';
//html += "<td style='width:10%'>" + "adHoc" + "</td><td style='width:5%'>" + "N/A" + "</td><td style='width:10%'>"+destination+"</td>";
//----------
var ship2 = vgap.myships[count];
var destination2="Deep Space";
var dest2 = vgap.getDest(ship2);
var output2=betterWarpWell(dest2.x,dest2.y);
if (output2!="0")
destination2 = output2;
if (ship2.target != null)
destination2 = ship2.target.name.substr(0, 20);
var mission_list=returnMissionArray(ship2);
html+='<tr class="RowSelect" title="' + ship2.name + '" style="vertical-align:top;">';
html += "<td style='width:10%'>" + "" + "</td><td style='width:5%'>" + "" + "</td><td style='width:10%'>"+destination2+"</td>";
html+="<td style='width:5%' onclick='vgap.map.selectShip(" + ship2.id + ");'><img class='TinyIcon' src='" + hullImg(ship2.hullid)+ "'/></td><td onclick='vgap.map.selectShip(" + ship2.id + ");' style='width:5%'>"+ship2.id+"</td><td onclick='vgap.map.selectShip(" + ship2.id + ");'>"+ship2.name+"</td>";
html += "<td><select id='DropdownA" + j + "' onChange='setMission(this)'>";
for (var k=0;k<17;k++)
{
if (ship2.mission==k)
html+= "<option value='" + k + "' selected=>" + mission_list[k] + "</option>"
else
html+= "<option value='" + k + "'>" + mission_list[k] + "</option>"
}
html += "</select></td>";
html += "<td>" + vgap.getBattleValue(ship2) + "</td><td>" + ship2.enemy+ "</td><td>" + ship2.x + "-" + ship2.y + "</td><td>" + vgap.getTravelDist(ship2).toFixed(1) + "</td><td>" + ship2.warp + "</td><td>" + ship2.neutronium + "</td>";
//---------------START NEW CODE-----------------------
html += "<td><input type='text' id='InputA"+j+"' size='3' maxlength='3' onchange='setFC(this);' value='" + ship2.friendlycode +"'/></td>";
html += "<td><button type='button' id='ButtonA"+j +"' onClick='setFleetDest(this);'>Set Flt Dest</button></td>";
if (ship2.readystatus>0)
html += "<td><input type='checkbox' id='CheckA"+j+"' checked='checked' onchange='setCB(this);'/></td>";
else
html += "<td><input type='checkbox' id='CheckA"+j+"' onchange='setCB(this);'/></td>";
//---------------END NEW CODE-----------------------
html+="</tr>";
}
//else alert("no match "+ showDestination + count + vgap.myships[count].x + enteredShip.x + vgap.myships[count].y + enteredShip.y);
if((showDestination==1)&&(vgap.myships[count].targetx==enteredShip.targetx)&&(vgap.myships[count].targety==enteredShip.targety))
{
var ship = vgap.myships[count];
var hull = vgap.getHull(ship.hullid);
var destination="Deep Space";
var dest = vgap.getDest(ship);
var output=betterWarpWell(dest.x,dest.y);
if (output!="0")
destination = output;
if (ship.target != null)
destination = ship.target.name.substr(0, 20);
var distance = Math.dist(ship.x, ship.y, ship.targetx,ship.targety);
var speed=vgap.getSpeed(ship.warp, ship.hullid);
var location="Deep Space";
//html+='<tr class="RowSelect" title="' + ship.name + '" onClick="changeShowFleet('+i+');" style="vertical-align:top; font-weight:bold;">';
//html += "<td style='width:10%'>" + "adHoc" + "</td><td style='width:5%'>" + "N/A" + "</td><td style='width:10%'>"+destination+"</td>";
//----------
var ship2 = vgap.myships[count];
var destination2="Deep Space";
var dest2 = vgap.getDest(ship2);
var output2=betterWarpWell(dest2.x,dest2.y);
if (output2!="0")
destination2 = output2;
if (ship2.target != null)
destination2 = ship2.target.name.substr(0, 20);
var mission_list=returnMissionArray(ship2);
html+='<tr class="RowSelect" title="' + ship2.name + '" style="vertical-align:top;">';
html += "<td style='width:10%'>" + "" + "</td><td style='width:5%'>" + "" + "</td><td style='width:10%'>"+destination2+"</td>";
html+="<td style='width:5%' onclick='vgap.map.selectShip(" + ship2.id + ");'><img class='TinyIcon' src='" + hullImg(ship2.hullid)+ "'/></td><td onclick='vgap.map.selectShip(" + ship2.id + ");' style='width:5%'>"+ship2.id+"</td><td onclick='vgap.map.selectShip(" + ship2.id + ");'>"+ship2.name+"</td>";
html += "<td><select id='DropdownA" + j + "' onChange='setMission(this)'>";
for (var k=0;k<17;k++)
{
if (ship2.mission==k)
html+= "<option value='" + k + "' selected=>" + mission_list[k] + "</option>"
else
html+= "<option value='" + k + "'>" + mission_list[k] + "</option>"
}
html += "</select></td>";
html += "<td>" + vgap.getBattleValue(ship2) + "</td><td>" + ship2.enemy+ "</td><td>" + ship2.x + "-" + ship2.y + "</td><td>" + vgap.getTravelDist(ship2).toFixed(1) + "</td><td>" + ship2.warp + "</td><td>" + ship2.neutronium + "</td>";
//---------------START NEW CODE-----------------------
html += "<td><input type='text' size='3' maxlength='3' id='InputA"+j+"' onchange='setFC(this);' value='" + ship2.friendlycode +"'/></td>";
html += "<td><button type='button' id='ButtonA"+j +"' onClick='setFleetDest(this);'>Set Flt Dest</button></td>";
if (ship2.readystatus>0)
html += "<td><input type='checkbox' id='CheckA"+j+"' checked='checked' onchange='setCB(this);'/></td>";
else
html += "<td><input type='checkbox' id='CheckA"+j+"' onchange='setCB(this);'/></td>";
//---------------END NEW CODE-----------------------
html+="</tr>";
}
}
}
for (var i = 0; i < fleetNames2.length; i++)
{
// html += "<th align='left'>Fleet Name</th><th align='left'>Fleet Size</th><th align='left'> Flagship Hull</th><th align='left'> Flagship Id</th><th align='left'>Flagship Hull</th><th align='left'>Flagship Name</th><th title='Destination' align='left'>Destination</th><th title='Current Coordinates' align='left'>X-Y</th><th title='Distance to Target' align='left'>D</th><th title='Warp Speed' align='left'>W</th>";
var ship = vgap.getShip(fleetFlagships2[i]);
//alert(ship.name);
var hull = vgap.getHull(ship.hullid);
var destination="Deep Space";
var dest = vgap.getDest(ship);
var output=betterWarpWell(dest.x,dest.y);
if (output!="0")
destination = output;
if (ship.target != null)
destination = ship.target.name.substr(0, 20);
var distance = Math.dist(ship.x, ship.y, ship.targetx,ship.targety);
var speed=vgap.getSpeed(ship.warp, ship.hullid);
var location="Deep Space";
var fleetName=returnFleetName2(ship);
html+='<tr title="' + ship.name + '" onClick="changeShowFleet('+i+');" style="vertical-align:top; font-weight:bold;">';
html += "<td style='width:10%'>" + fleetNames2[i] + "</td><td style='width:5%'>" + fleetSizes2[i] + "</td><td style='width:10%'>"+destination+"</td>";
if (showFleet[i]==true)
{
html+="</tr>";
for (var j=0;j<vgap.myships.length;j++)
{
var ship2 = vgap.myships[j];
var fleetName2=returnFleetName2(ship2);
if (fleetName!=-1)
if (fleetName2==fleetName)
{
var destination2="Deep Space";
var dest2 = vgap.getDest(ship2);
var output2=betterWarpWell(dest2.x,dest2.y);
if (output2!="0")
destination2 = output2;
if (ship2.target != null)
destination2 = ship2.target.name.substr(0, 20);
var mission_list=returnMissionArray(ship2);
html+='<tr class="RowSelect" title="' + ship2.name + '" style="vertical-align:top;">';
html += "<td style='width:10%'>" + fleetNames2[i] + "</td><td style='width:5%'>" + fleetSizes2[i] + "</td><td style='width:10%'>"+destination2+"</td>";
html+="<td style='width:5%' onclick='vgap.map.selectShip(" + ship2.id + ");'><img class='TinyIcon' src='" + hullImg(ship2.hullid)+ "'/></td><td onclick='vgap.map.selectShip(" + ship2.id + ");' style='width:5%'>"+ship2.id+"</td><td onclick='vgap.map.selectShip(" + ship2.id + ");'>"+ship2.name+"</td>";
html += "<td><select id='DropdownA" + j + "' onChange='setMission(this)'>";
for (var k=0;k<17;k++)
{
if (ship2.mission==k)
html+= "<option value='" + k + "' selected=>" + mission_list[k] + "</option>"
else
html+= "<option value='" + k + "'>" + mission_list[k] + "</option>"
}
html += "</select></td>";
html += "<td>" + vgap.getBattleValue(ship2) + "</td><td>"+ ship2.enemy +"</td><td>" + ship2.x + "-" + ship2.y + "</td><td>" + vgap.getTravelDist(ship2).toFixed(1) + "</td><td>" + ship2.warp + "</td><td>" + ship2.neutronium + "</td>";
//---------------START NEW CODE-----------------------
html += "<td><input type='text' id='InputA"+j+"' size='3' maxlength='3' onchange='setFC(this);' value='" + ship2.friendlycode +"'/></td>";
html += "<td><button type='button' id='ButtonA"+j +"' onClick='setFleetDest(this);'>Set Flt Dest</button></td>";
if (ship2.readystatus>0)
html += "<td><input type='checkbox' id='CheckA"+j+"' checked='checked' onchange='setCB(this);'/></td>";
else
html += "<td><input type='checkbox' id='CheckA"+j+"' onchange='setCB(this);'/></td>";
//---------------END NEW CODE-----------------------
html+="</tr>";
}
}
}
else
html+="<td style='width:5%'><img class='TinyIcon' src='" + hullImg(ship.hullid)+ "'/></td><td style='width:5%'>"+ship.id+"</td><td>"+ship.name+"</td>";
//html+="<td><img class='TinyIcon' src='" + hullImg(ship.hullid)+ "'/></td><td>"+ship.id+"</td><td>"+hull.name+"</td><td>"+ship.name+"</td><td>" + ship.x + "-" + ship.y + "</td><td>" + vgap.getTravelDist(ship).toFixed(1) + "</td><td>" + ship.warp + "</td><td>" + (ship.readystatus > 0 ? (ship.readystatus == 1 ? "-" : "+") : "") + "</td>";
html+="</tr>";
//alert(i+" "+ fleetNames2.length);
}
//html+="</tbody></table>";
var select;
if (view==2||view==4||view==5)
select = function(id) { return function() {};};
else
select = function(id) { return function() { vgap.map.selectShip(id); }; };
$(html).click(select(ship.id)).appendTo("#ShipRows");
}
//---------------END NEW CODE-----------------------
$("#ShipTable").tablesorter();
this.pane.jScrollPane();
// vgap.action added for the assistant (Alex):
vgap.showShipsViewed = 1;
vgap.action();
}
};
//==========================================Utility Functions==========================================
betterWarpWell = function (x, y) {
var output="0";
for (var i = 0; i < vgap.planets.length; i++) {
var planet = vgap.planets[i];
var dist;
if (vgaPlanets.prototype.version>=3)
dist=Math.dist(x, y, planet.x, planet.y);
else //if (vgaPlanets.prototype.version<3)
dist=vgap.map.getDist(x, y, planet.x, planet.y);
if (dist==0)
{
output=planet.name;
return(output);
}
else if (dist <= 3 && dist > 0)
{
output=planet.name;
return(output+" Warpwell");
}
else if (dist>3 && dist<6)
{
output="Outside "+planet.name;
return(output+" Warpwell");
}
}
return(output);
};
idWarpWell = function (x, y) {
var output=-1;
for (var i = 0; i < vgap.planets.length; i++) {
var planet = vgap.planets[i];
var dist;
if (vgaPlanets.prototype.version>=3)
dist=Math.dist(x, y, planet.x, planet.y);
else //if (vgaPlanets.prototype.version<3)
dist=vgap.map.getDist(x, y, planet.x, planet.y);
if (dist==0)
{
return(planet.id);
}
else if (dist <= 3 && dist > 0)
{
return(planet.id);
}
}
return(output);
};
var oldShowSettings = vgapDashboard.prototype.showSettings;
vgapDashboard.prototype.showSettings = function () {
//oldShowSettings.apply(this,arguments);
var new_html="";
modShipListCloakPE=get_cookie("modShipListCloakPE");
new_html += "<br><h3>Custom Settings for Improved Ship List Mod</h3>";
new_html += "<div style='width:250px;'></div>";
new_html += "<div id='ShipListModTable'><table>";
new_html += "<td><div id='LaunchSim' onclick='changeShipListMod();' title='Default is: Active.'>Activate or Deactivate Mod</div></td>";
new_html += "<td><div id='LaunchSim' onclick='changeCloakPE();' title='Default is: InActive.'>Warn on Cloaked Ship with PE</div></td></tr></table>";
if (vgaPlanets.prototype.version>=3)
{
this.customSettingsContent.push(new_html);
}
oldShowSettings.apply(this,arguments);
if (vgaPlanets.prototype.version<3)
{
$('[onclick="vgap.resetTurn();"]').after(new_html);
this.pane.jScrollPane();
}
if (vgaPlanets.prototype.version>=3)
{
this.customSettingsContent.pop();
}
};
changeShipListMod = function()
{
if (modShipList==true)
{
modShipList=false;
alert("The Improved Ship List Mod is now Deactivated.");
}
else
{
modShipList=true;
alert("The Improved Ship List Mod is now Active.");
}
};
changeCloakPE = function()
{
if (modShipListCloakPE==true)
{
modShipListCloakPE=false;
set_cookie("modShipListCloakPE",0,2099,1,1);
alert("No longer warning on cloaked ships with PE set. Setting saved.");
}
else
{
modShipListCloakPE=true;
set_cookie("modShipListCloakPE",1,2099,1,1);
alert("Now warning on cloaked ships with PE set. Setting saved.");
}
};
setFleetDest= function(ship__ship)
{
var ship_length=ship__ship.id.length;
var ship_output=ship__ship.id.substring(6,ship_length);
var command=0;
var fleetName;
if (ship_output.charAt(0)=='A')
{
ship_output=ship_output.substring(1,ship_length);
command=1;
}
else
{
command=2;
}
var ship_num=Number(ship_output);
var ship=vgap.myships[ship_num];
if (command==1) fleetName=returnFleetName(ship);
var count=0;
var lowFuel=0;
if (command==1) //in a labeled fleet
for (var i = 0; i < vgap.myships.length; i++)
{
if (returnFleetName(vgap.myships[i])==fleetName)
{
count++;
if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) lowFuel++;
vgap.myships[i].targetx = ship.targetx;
vgap.myships[i].targety = ship.targety;
vgap.myships[i].waypoints = ship.waypoints;
var dest = vgap.getDest(vgap.myships[i]);
vgap.myships[i].target = vgap.getTarget(dest.x, dest.y);
}
}
else //unlabeled group at location
for (var i = 0; i < vgap.myships.length; i++)
{
//alert("its "+ i);
if((vgap.myships[i].x==ship.x)&&(vgap.myships[i].y==ship.y))
{
//alert("hi!");
count++;
vgap.myships[i].targetx = ship.targetx;
vgap.myships[i].targety = ship.targety;
vgap.myships[i].waypoints = ship.waypoints;
var dest = vgap.getDest(vgap.myships[i]);
vgap.myships[i].target = vgap.getTarget(dest.x, dest.y);
if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) lowFuel++;
}
}
if (lowFuel>0) alert ("Updated destination for " + count + " ships. " + lowFuel + " ships have insufficient fuel!");
else
alert("Updated destination for " + count + " ships");
if (command==2)
vgap.dash.showShips(2);
else
vgap.dash.showShips(5);
if (vgaPlanets.prototype.version<3)
vgap.map.updateZoom();
else
{
vgap.loadWaypoints();
vgap.shipScreen.screen.refresh();
}
vgap.map.draw();
};
setFC= function(fc__fc)
{
var fc_length=fc__fc.id.length;
var fc_ID=fc__fc.id.substring(5,fc_length);
var command=0;
//alert(fc_ID);
if (fc_ID.charAt(0)=='A')
{
fc_ID=fc_ID.substring(1,fc_length);
command=1;
//alert(fc_ID+" "+fc__fc.value);
}
vgap.myships[fc_ID].friendlycode=fc__fc.value;
if (command==0)
vgap.dash.showShips(2);
else
vgap.dash.showShips(5);
if (vgaPlanets.prototype.version<3)
vgap.map.updateZoom();
vgap.map.draw();
};
setMission=function(ms__ms)
{
var ms_length=ms__ms.id.length;
var ms_ID=ms__ms.id.substring(8,ms_length);
var command=0;
if (ms_ID.charAt(0)=='A')
{
ms_ID=ms_ID.substring(1,ms_length);
command=1;
}
var ship=vgap.myships[ms_ID];
var dest = vgap.getDest(ship);
var mission_list=returnMissionArray(ship);
if (mission_list[ms__ms.value]=="Invalid")
alert ("Invalid Mission Selected");
else
vgap.myships[ms_ID].mission=ms__ms.value;
if (command==0)
vgap.dash.showShips(2);
else
vgap.dash.showShips(5);
if (vgaPlanets.prototype.version<3)
vgap.map.updateZoom();
vgap.map.draw();
};
setCB=function(cb__cb)
{
var cb_length=cb__cb.id.length;
var cb_ID=cb__cb.id.substring(5,cb_length);
var command=0;
if (cb_ID.charAt(0)=='A')
{
cb_ID=cb_ID.substring(1,cb_length);
command=1;
}
if (vgap.myships[cb_ID].readystatus>0) vgap.myships[cb_ID].readystatus=0;
else vgap.myships[cb_ID].readystatus=1;
if (command==0)
vgap.dash.showShips(2);
else
vgap.dash.showShips(5);
if (vgaPlanets.prototype.version<3)
vgap.map.updateZoom();
vgap.map.draw();
};
setShipID=function(passed)
{
//alert(passed.value);
set_cookie("currentShipID",passed.value,2099,1,1);
};
setShowDestination=function(passed)
{
showDestination=passed;
set_cookie("showDestination",passed,2099,1,1);
};
changeShow = function(race)
{
if (showShip[race]==false)
showShip[race]=true;
else
showShip[race]=false;
vgap.dash.showShips(4);
};
changeShowFleet = function(index)
{
//alert("hi");
if (showFleet[index]==false)
showFleet[index]=true;
else
showFleet[index]=false;
vgap.dash.showShips(5);
};
returnMissionArray = function (ship)
{
var missions = new Array();
missions.push("Exploration");
missions.push("Mine Sweep");
if (ship.torps > 0)
missions.push("Lay Mines");
else
missions.push("Invalid");
missions.push("Kill!!");
if (ship.hullid == 84 || ship.hullid == 96 || ship.hullid == 9)
missions.push("Bio Scan");
else
missions.push("Sensor Sweep");
missions.push("Land and Disassemble");
missions.push("Try to Tow");
missions.push("Try to Intercept");
//special race missions
if (vgap.player.raceid == 1)
missions.push("Super Refit");
else if (vgap.player.raceid == 2 && ship.beams > 0)
missions.push("Hisssss!");
else if (vgap.player.raceid == 2)
missions.push("Invalid");
else if (vgap.player.raceid == 3)
missions.push("Super Spy");
else if (vgap.player.raceid == 4 && ship.beams > 0)
missions.push("Pillage Planet");
else if (vgap.player.raceid == 4)
missions.push("Invalid");
else if (vgap.player.raceid == 5)
missions.push("Rob Ship");
else if (vgap.player.raceid == 6)
missions.push("Self Repair");
else if (vgap.player.raceid == 7 && ship.torps > 0)
missions.push("Lay Web Mines");
else if (vgap.player.raceid == 7)
missions.push("Invalid");
else if (vgap.player.raceid == 8)
missions.push("Dark Sense");
else if ((vgap.player.raceid == 9 || vgap.player.raceid == 11) && ship.bays > 0)
missions.push("Build Fighters");
else if ((vgap.player.raceid == 9 || vgap.player.raceid == 11))
missions.push("Invalid");
else if (vgap.player.raceid == 10)
missions.push("Rebel Ground Attack");
var hull = vgap.getHull(ship.hullid);
if (hull.cancloak)
missions.push("Cloak");
else
missions.push("Invalid");
missions.push("Beam up Fuel");
missions.push("Beam up Duranium");
missions.push("Beam up Tritanium");
missions.push("Beam up Molybdenum");
missions.push("Beam up Supplies");
if (ship.hullid == 1090)
missions.push("Repair Ship");
else
missions.push("Invalid");
if (ship.hullid == 70 && vgap.advActive(44))
missions.push("Destroy Planet");
else
missions.push("Invalid");
return missions;
};
set_cookie=function( name, value, exp_y, exp_m, exp_d, path, domain, secure )
//name=cookie name (required)
//value=cookie value (required)
//exp_y,M,d is expiration year, month, day (if blank cookie will delete when browser closes)
//path=path within site this applies to (can be blank)
//domain=apply only to websites in this domain (can be blank)
//secure=use SSL (leave blank)
{
var cookie_string = name + "=" + escape ( value );
if ( exp_y )
{
var expires = new Date ( exp_y, exp_m, exp_d );
cookie_string += "; expires=" + expires.toGMTString();
}
if ( path )
cookie_string += "; path=" + escape ( path );
if ( domain )
cookie_string += "; domain=" + escape ( domain );
if ( secure )
cookie_string += "; secure";
document.cookie = cookie_string;
};
get_cookie =function( cookie_name )
{
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if ( results )
return ( unescape ( results[2] ) );
else
return null;
};
//====================FLEET FUNCTIONS=================================
buildFleetList2=function()
{
fleetNames2.length=0;
fleetFlagships2.length=0;
fleetSizes2.length=0;
showFleet.length=0;
for (var i = 0; i < vgap.myships.length; i++)
{
if (vgap.myships[i].name.charAt(0)=='[')
if (vgap.myships[i].name.indexOf(']')!=-1)
{
var name=vgap.myships[i].name.substring(1,vgap.myships[i].name.indexOf(']'));
var position=fleetNames2.indexOf(name);
if (position==-1) //fleet is new
{
fleetNames2.push(name);
fleetFlagships2.push(vgap.myships[i].id);
fleetSizes2.push(1);
showFleet.push(false);
// position=(fleetNames2.length)-1;//for testing only
}
else
fleetSizes2[position]++;
//alert(name+' '+fleetSizes2[position]);
}
//alert(vgap.myships[i].name.charAt(1));
}
};
returnFleetName2 = function(ship)
{
if (ship.name.charAt(0)=='[')
if (ship.name.indexOf(']')!=-1)
return(ship.name.substring(1,ship.name.indexOf(']')));
return(-1)
};
returnFlagshipID2 = function(fleet_name)
{
var index=fleetNames2.indexOf(fleet_name);
return(fleetFlagships2[index]);
};
returnFleetSize2 = function(fleet_name)
{
var index=fleetNames2.indexOf(fleet_name);
return (fleetSizes2[index]);
};
var oldchangeShipName=vgapShipScreen.prototype.changeShipName;
vgapShipScreen.prototype.changeShipName = function () {
oldchangeShipName.apply(this, arguments);
buildFleetList2();
};
var oldprocessLoad=vgaPlanets.prototype.processLoad;
vgaPlanets.prototype.processLoad = function (result){
oldprocessLoad.apply(this,arguments);
buildFleetList2();
};
//================END FLEET FUNCTIONS=================================
//====================FUEL FUNCTIONS==================================
checkFuel = function(ship)
{
var fuel=0;
var path = vgap.getPath(ship);
for (var i = 0; i < path.length; i++) {
if (vgaPlanets.prototype.version<3)
fuel += getFuelUsage2(ship,path[i].x1, path[i].y1, path[i].x2, path[i].y2);
else
fuel += getFuelUsage3(ship,path[i].x1, path[i].y1, path[i].x2, path[i].y2);
}
if (fuel == 0)
fuel += cloakedFuel(ship);
return(fuel);
};
cloakedFuel = function (ship) {
var hull = vgap.getHull(ship.hullid);
if ((ship.mission == 9 || (vgap.player.raceid == 3 && ship.mission == 8 && hull.cancloak)) && ship.hullid != 29 && ship.hullid != 31)
return Math.max(5, Math.floor((hull.mass / 100) * 5));
else
return 0;
};
turnFuel2 = function (distance, mass, xv, turndistance,ship) {
return Math.floor(xv * Math.floor(mass / 10) * ((Math.floor(distance) / turndistance) / 10000)) + cloakedFuel(ship);
},
getFuelUsage2 = function (ship, x1, y1, x2, y2) {
var engine = vgap.getEngine(ship.engineid);
var distance = vgap.map.getDist(x1, y1, x2, y2);
if (ship.warp == 0)
return 0;
var xv = 0;
switch (ship.warp) {
case 1:
xv = engine.warp1;
break;
case 2:
xv = engine.warp2;
break;
case 3:
xv = engine.warp3;
break;
case 4:
xv = engine.warp4;
break;
case 5:
xv = engine.warp5;
break;
case 6:
xv = engine.warp6;
break;
case 7:
xv = engine.warp7;
break;
case 8:
xv = engine.warp8;
break;
case 9:
xv = engine.warp9;
break;
}
//Save fuel value to update during the calculation
var currentfuel = ship.neutronium;
var fuel = 0;
var turndistance = vgap.getSpeed(ship.warp, ship.hullid);
var distanceremaining = distance;
var mass = vgapShipScreen.prototype.getMass(ship, true);
//tow
if (ship.mission == 6 && ship.mission1target != 0) {
var towship = vgap.getShip(ship.mission1target);
if (towship != null)
mass += vgapShipScreen.prototype.getMass(towship, true);
}
var warp = ship.warp;
while (distanceremaining > turndistance) {
distanceremaining -= turndistance;
var turnfuel = turnFuel2(turndistance, mass, xv, turndistance,ship);
fuel += turnfuel;
ship.neutronium -= turnfuel;
if (ship.neutronium < 0) {
turnfuel = ship.neutronium;
ship.neutronium = 0;
}
mass -= turnfuel;
var pa = vgap.planetAt(x2, y2);
if (distanceremaining < 3 && pa != null) {
distanceremaining = 0;
}
}
if (distanceremaining > 0)
fuel += turnFuel2(distanceremaining, mass, xv, turndistance,ship);
//Return fuel back to correct value
ship.neutronium = currentfuel;
return fuel;
}
getFuelUsage3 = function (ship, x1, y1, x2, y2) {
var engine = vgap.getEngine(ship.engineid);
var distance = Math.dist(x1, y1, x2, y2);
if (ship.warp == 0)
return 0;
if (vgap.isHyping(ship))
return 50;
var xv = vgap.getXV(engine, ship.warp);
//Save fuel value to update during the calculation
var currentfuel = ship.neutronium;
var fuel = 0;
var turndistance = vgap.getSpeed(ship.warp, ship.hullid);
var distanceremaining = distance;
var mass = vgap.getMass(ship, true);
//tow
if (ship.mission == 6 && ship.mission1target != 0) {
var towship = vgap.getShip(ship.mission1target);
if (towship != null)
mass += vgap.getMass(towship, true);
}
var warp = ship.warp;
while (distanceremaining > turndistance) {
distanceremaining -= turndistance;
var turnfuel = vgap.turnFuel(turndistance, mass, xv, turndistance, vgap.cloakFuel(ship));
fuel += turnfuel;
ship.neutronium -= turnfuel;
if (ship.neutronium < 0) {
turnfuel = ship.neutronium;
ship.neutronium = 0;
}
mass -= turnfuel;
var pa = vgap.planetAt(x2, y2);
if (distanceremaining < 3 && pa != null) {
distanceremaining = 0;
}
}
if (distanceremaining > 0)
fuel += vgap.turnFuel(distanceremaining, mass, xv, turndistance, vgap.cloakFuel(ship));
//Return fuel back to correct value
ship.neutronium = currentfuel;
return fuel;
}
//==========================END FUEL FUNCTIONS=======================================
} //wrapper for injection
var script = document.createElement("script");
script.type = "application/javascript";
script.textContent = "(" + wrapper + ")();";
document.body.appendChild(script);