您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Planets.nu Fleet UI for Ship Screen
// ==UserScript== // @name Planets.nu Fleet UI // @description Planets.nu Fleet UI for Ship Screen // @include http://planets.nu/home // @include http://planets.nu/games/* // @include http://play.planets.nu/* // @include http://*.planets.nu/* // @include http://test.planets.nu/* // @include http://planets.nu/* // @version 0.91 // @namespace https://greasyfork.org/users/2860 // ==/UserScript== // 0.1 First version - adds new Fleet tab to ship screen view, and the Set Fleet Movement button. // 0.2 Sets speed for all non-towed ships to the same speed as the current ship // 0.3 Keeps track of number of ships at that location, and displays the total cargo for all ships combined // 0.4 Add in buttons that let you move forward and backwards among the ships of the fleet. // 0.5 Checks fuel when setting group destination, adds button to display only ships with low fuel warnings // 0.6 Now supports use of [] tags for fleet names. [] tagged ships are treated as fleets. // 0.7 Adds minesweep, minelay, fighter, and torp information for fleet. // 0.8 Improved fleet information. // 0.9 Ready all/Unready all (ignores double checked ships), modified formatting to fit more info, added hook into fleet view mod function wrapper () { // wrapper for injection var fleetNames=new Array(); var fleetFlagships=new Array(); var fleetSizes=new Array(); var oldLoad = vgapShipScreen.prototype.load; vgapShipScreen.prototype.load = function (ship) { oldLoad.apply(this, arguments); $("<div class='SepBar'><div class='SepButton' id='"+ship.id+"' title='Use this Ships warp for all non-towed ships at this location' onclick='setFleetSpeed(this);'>Set Speed</div><div class='SepButton' id='"+ship.id+"' title='Use this Ships waypoints for all ships at this location' onclick='moveFleet(this);'>Set Destination</div><div class='SepTitle' id='FleetTitle' onclick=\"vgap.septoggle('FleetCommands');\"></div></div>").appendTo("#ShipScreen"); this.Fleet = $("<div class='SepContainer' id='FleetCommands'/>").appendTo("#ShipScreen"); this.loadFleet(); vgap.shipScreen.draw(); }; vgapShipScreen.prototype.loadFleet = function () { //this.Fleet.empty(); var ship = this.ship; var html = "<table width='100%'>"; var ship_count=0; var supply_count=0; var moly_count=0; var clan_count=0; var dur_count=0; var tri_count=0; var mc_count = 0; var neut_count=0; var mine_sweep=0; var fighter_count=0; var mine_count=0; var minelay_torp_count=0; var total_cargo=0; var total_cargo_used=0; var total_fuel=0; var low_fuel_count=0; var fleetName=returnFleetName(ship); if (fleetName!=-1) //in a labeled fleet { for (var i = 0; i < vgap.myships.length; i++) if(returnFleetName(vgap.myships[i])==fleetName) { var hull = vgap.getHull(vgap.myships[i].hullid); supply_count+=vgap.myships[i].supplies; moly_count+=vgap.myships[i].molybdenum; clan_count+=vgap.myships[i].clans; dur_count+=vgap.myships[i].duranium; tri_count+=vgap.myships[i].tritanium; mc_count +=vgap.myships[i].megacredits; neut_count+=vgap.myships[i].neutronium; if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) low_fuel_count++; if (vgap.myships[i].bays > 0) fighter_count+=vgap.myships[i].ammo; if (vgap.myships[i].beams > 0) mine_sweep+=(vgap.myships[i].beams * vgap.myships[i].beamid * vgap.myships[i].beamid); if (vgap.myships[i].torps > 0) { minelay_torp_count+=vgap.myships[i].minelaytorps; mine_count+=vgapShipScreen.prototype.getMineUnits(vgap.myships[i]); } total_cargo_used+=(vgap.myships[i].ammo + vgap.myships[i].duranium + vgap.myships[i].tritanium + vgap.myships[i].molybdenum + vgap.myships[i].supplies + vgap.myships[i].clans); total_cargo+=hull.cargo; total_fuel+=hull.fueltank; } $("#FleetTitle").text("Fleet: "+ fleetName + " - " +returnFleetSize(fleetName)+ " ships"); } else //unlabeled group at a location { for (var i = 0; i < vgap.myships.length; i++) if((vgap.myships[i].x==ship.x)&&(vgap.myships[i].y==ship.y)) { var hull = vgap.getHull(vgap.myships[i].hullid); ship_count++; supply_count+=vgap.myships[i].supplies; moly_count+=vgap.myships[i].molybdenum; clan_count+=vgap.myships[i].clans; dur_count+=vgap.myships[i].duranium; tri_count+=vgap.myships[i].tritanium; mc_count +=vgap.myships[i].megacredits; neut_count+=vgap.myships[i].neutronium; if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) low_fuel_count++; if (vgap.myships[i].bays > 0) fighter_count+=vgap.myships[i].ammo; if (vgap.myships[i].beams > 0) mine_sweep+=(vgap.myships[i].beams * vgap.myships[i].beamid * vgap.myships[i].beamid); if (vgap.myships[i].torps > 0) { minelay_torp_count+=vgap.myships[i].ammo; mine_count+=vgapShipScreen.prototype.getMineUnits(vgap.myships[i]); } total_cargo_used+=(vgap.myships[i].ammo + vgap.myships[i].duranium + vgap.myships[i].tritanium + vgap.myships[i].molybdenum + vgap.myships[i].supplies + vgap.myships[i].clans); total_cargo+=hull.cargo; total_fuel+=hull.fueltank; } $("#FleetTitle").text("Fleet: "+ ship_count+ " at location"); } var html; html="<button id='"+ship.id+"' onclick='fleetBack(this);'>< Fleet</button><button id='"+ship.id+"' onclick='fleetNext(this);'>Fleet ></button>"; html+="<button id='"+ship.id+"' onclick='shipBack(this);'>< Ship</button><button id='"+ship.id+"' onclick='shipNext(this);'>Ship ></button>"; html+="<button id='"+ship.id+"' onclick='readyFleet(this);'>Set Ready</button>"; html+="<button id='"+ship.id+"' onclick='saveShipID(this);vgap.showDashboard();vgap.dash.showShips(5);'>List</button>"; //alert("hi"); html += "<table width='100%'>"; if (vgaPlanets.prototype.version<3) html += "<tr><td>Neutronium:</td><td style='color:#006600;font-weight:bold;'>" + neut_count + "/" + total_fuel + " kt</td><td> Fuel Warnings:<button id='"+ship.id+","+low_fuel_count+",0' onclick='showShips2(this);'> " + low_fuel_count + "</button></td></tr>"; else html += "<tr><td>Neutronium:</td><td style='color:#006600;font-weight:bold;'>" + neut_count + "/" + total_fuel + " kt</td><td> Fuel Warnings:<button id='"+ship.id+","+low_fuel_count+",0' onclick='showShips3(this);'> " + low_fuel_count + "</button></td></tr>"; html += "</table>"; html += "<table width='100%'>"; html += "<tr><td class='head'>CARGO:</td><td class='val'>" + total_cargo_used +"/"+total_cargo + "</td><td class='head'>Fighters:</td><td class='val'>" + fighter_count + "</td><td class='head'>Torps:</td><td class='val'>" + minelay_torp_count + "</td></tr>"; html += "<tr><td class='head'>Dur:</td><td class='val'>" + dur_count + " kt</td><td class='head'>Tri:</td><td class='val'>" + tri_count + " kt</td><td class='head'>Moly:</td><td class='val'>" + moly_count + " kt</td></tr>"; html += "<tr><td class='head'>MCs:</td><td class='val'>" + mc_count + "</td><td class='head'>Sup:</td><td class='val'>" + supply_count + " kt</td><td class='head'>Clans:</td><td class='val'>" + clan_count + "</td></tr>"; html += "</table>"; html += "<table width='100%'>"; html += "<tr><td>Minelay:</td><td style='color:#006600;font-weight:bold;' >" + mine_count + " Mines</td><td>Minesweep:</td><td style='color:#006600;font-weight:bold;' >" + mine_sweep*4 + " /"+ mine_sweep*3 + " Web</td></tr>"; html += "</table>"; $(html).appendTo("#FleetCommands"); }; shipBack = function(passed) { var ship=vgap.getShip(passed.id); var last=ship; var fleetName=returnFleetName(ship); if (fleetName!=-1) //in a labeled fleet { for (var i = 0; i < vgap.myships.length; i++) if(returnFleetName(vgap.myships[i])==fleetName) if (vgap.myships[i].id==ship.id) if (ship.id!=last.id) vgap.map.selectShip(last.id); else break; else last=vgap.myships[i]; } else //in an unlabeled group for (var i = 0; i < vgap.myships.length; i++) { var fleet=returnFleetName(vgap.myships[i]); if((vgap.myships[i].x==ship.x)&&(vgap.myships[i].y==ship.y)&&(fleet==-1)) if (vgap.myships[i].id==ship.id) if (ship.id!=last.id) vgap.map.selectShip(last.id); else break; else last=vgap.myships[i]; } //vgap.map.selectShip(id); }; shipNext = function(passed) { var ship=vgap.getShip(passed.id); var last=ship; var number=vgap.myships.length-1; var fleetName=returnFleetName(ship); if (fleetName!=-1) //in a labeled fleet { for (var i = number; i>=0 ; i--) if(returnFleetName(vgap.myships[i])==fleetName) if (vgap.myships[i].id==ship.id) if (ship.id!=last.id) vgap.map.selectShip(last.id); else break; else last=vgap.myships[i]; } else //in an unlabeled group for (var i = number; i>=0 ; i--) { var fleet=returnFleetName(vgap.myships[i]); if((vgap.myships[i].x==ship.x)&&(vgap.myships[i].y==ship.y)&&(fleet==-1)) if (vgap.myships[i].id==ship.id) if (ship.id!=last.id) vgap.map.selectShip(last.id); else break; else last=vgap.myships[i]; } }; setFleetSpeed = function(passed) { //alert ("hey!"); var towed_ships=0; var count=0; var ship = vgap.getShip(passed.id); var fleetName=returnFleetName(ship); if (fleetName!=-1) //in a labeled fleet for (var i = 0; i < vgap.myships.length; i++) { if (returnFleetName(vgap.myships[i])==fleetName) if (vgap.isTowTarget(vgap.myships[i].id)) { towed_ships++; vgap.myships[i].warp=0; } else { count++; vgap.myships[i].warp = ship.warp; } } 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!"); if (vgap.isTowTarget(vgap.myships[i].id)) { towed_ships++; vgap.myships[i].warp=0; } else { count++; vgap.myships[i].warp = ship.warp; } } } alert("Set " + count + " ships to warp " + ship.warp + ", and set " + towed_ships + " towed ships to warp 0"); if (vgaPlanets.prototype.version<3) vgap.map.updateZoom(); else { vgap.loadWaypoints(); vgap.shipScreen.screen.refresh(); } vgap.map.draw(); }; readyFleet = function(passed) { var count=0; var notReady=0; var ship = vgap.getShip(passed.id); //alert(checkFuel(ship)); var fleetName=returnFleetName(ship); if (fleetName!=-1) //in a labeled fleet for (var i = 0; i < vgap.myships.length; i++) { if (returnFleetName(vgap.myships[i])==fleetName) { if (vgap.myships[i].readystatus!=2) { vgap.myships[i].readystatus = ship.readystatus; count++; } else notReady++; } } 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!"); if (vgap.myships[i].readystatus!=2) { vgap.myships[i].readystatus = ship.readystatus; count++; } else notReady++; } } if (notReady>0) alert ("Updated Readiness for " + count + " ships. " + notReady + " ships were skipped"); else alert("Updated Readiness for " + count + " ships"); if (vgaPlanets.prototype.version<3) vgap.map.updateZoom(); else { vgap.loadWaypoints(); vgap.shipScreen.screen.refresh(); } vgap.map.draw(); }; moveFleet = function(passed) { var count=0; var lowFuel=0; var ship = vgap.getShip(passed.id); //alert(checkFuel(ship)); var fleetName=returnFleetName(ship); if (fleetName!=-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++; 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); } } if (lowFuel>0) alert ("Updated destination for " + count + " ships. " + lowFuel + " ships have insufficient fuel!"); else alert("Updated destination for " + count + " ships"); if (vgaPlanets.prototype.version<3) vgap.map.updateZoom(); else { vgap.loadWaypoints(); vgap.shipScreen.screen.refresh(); } vgap.map.draw(); }; showShips2 = function (passed) { var data = passed.id.split(","); var ship = vgap.getShip(data[0]); var inMore = vgap.shipScreenOpen; var ships; var title = ""; var html = "<div id='SelectLocation'>"; if (data[2]!=0) ships = vgap.shipsAt(ship.x, ship.y); else { shipArray=new Array(); var fleetName=returnFleetName(ship); if (fleetName!=-1) //in a labeled fleet for (var i = 0; i < vgap.myships.length; i++) { if (returnFleetName(vgap.myships[i])==fleetName) if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) shipArray.push(vgap.myships[i]); } else //unlabeled group at location for (var i = 0; i < vgap.myships.length; i++) { if((vgap.myships[i].x==ship.x)&&(vgap.myships[i].y==ship.y)) if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) shipArray.push(vgap.myships[i]); } ships=shipArray; } for (var i = 0; i < ships.length; i++) { html += vgap.shipScan(ships[i], "vgap.map.selectShip(" + ships[i].id + ");"); } if (ships.length > 0) { if (title != "") title += ", "; title += ships.length + " ships"; } html += "</div>"; if (inMore) { html = "<h1>Ships with Fuel Warnings: " + title + "</h1>" + html; html += "<a class='MoreBack' onclick='vgap.closeMore();return false;'>OK</a>"; vgap.more.empty(); $(html).appendTo(vgap.more); $("#SelectLocation").height($(window).height() - 100); vgap.showMore(300); } else { html = "<div class='TitleBar'><div class='CloseScreen' onclick='vgap.closeLeft();'></div><div class='TopTitle'>Scan:" + title + "</div></div>" + html; vgap.map.centerMap(ship.x, ship.y); vgap.lc.empty(); $(html).appendTo(vgap.lc); vgap.openLeft(); $("#SelectLocation").height($(window).height() - 40); $("#SelectLocation").width(380); } $("#SelectLocation").jScrollPane(); }; showShips3 = function (passed) { var data = passed.id.split(","); var ship = vgap.getShip(data[0]); var inMore = vgap.shipScreenOpen; if (data[2]!=0) ships = vgap.shipsAt(ship.x, ship.y); else { shipArray=new Array(); var fleetName=returnFleetName(ship); if (fleetName!=-1) //in a labeled fleet for (var i = 0; i < vgap.myships.length; i++) { if (returnFleetName(vgap.myships[i])==fleetName) if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) shipArray.push(vgap.myships[i]); } else //unlabeled group at location for (var i = 0; i < vgap.myships.length; i++) { if((vgap.myships[i].x==ship.x)&&(vgap.myships[i].y==ship.y)) if (vgap.myships[i].neutronium<checkFuel(vgap.myships[i])) shipArray.push(vgap.myships[i]); } ships=shipArray; } var title = ""; var html = "<div id='SelectLocation'></div>"; if (inMore) { html = "<h1 id='ScanTitle'>Ships with Fuel Warnings: " + title + "</h1>" + html; vgap.more.empty(); $(html).appendTo(vgap.more); shtml.moreBack(); } else { var lc = new leftContent("ScanScreen", "Scan: ", null, function () { vgap.closeLeft(); }); vgap.map.centerMap(ship.x, ship.y); $(html).appendTo(vgap.lc); } for (var i = 0; i < ships.length; i++) { var scan = $(shtml.shipScan(ships[i])).appendTo("#SelectLocation"); scan.click(function (e) { vgap.map.selectShip($(this).data("id")); }); } if (ships.length > 0) { if (title != "") title += ", "; title += ships.length + " Ships with Fuel warnings"; } if (inMore) { $("#ScanTitle").text(title); //$("#SelectLocation").height($(window).height() - 100); vgap.showMore(330); } else { $("#ScanScreen .TopTitle").text(title); vgap.openLeft(); //$("#SelectLocation").height($(window).height() - 40); $("#SelectLocation").width(380); } if ($("#SelectLocation").height() > ($(window).height() - 40)) { $("#SelectLocation").height($(window).height() - 40); $("#SelectLocation").jScrollPane(); } }; saveShipID=function(passed) { set_cookie("currentShipID",passed.id); }; //====================FLEET FUNCTIONS================================= buildFleetList=function() { fleetNames.length=0; fleetFlagships.length=0; fleetSizes.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=fleetNames.indexOf(name); if (position==-1) //fleet is new { fleetNames.push(name); fleetFlagships.push(vgap.myships[i].id); fleetSizes.push(1); // position=(fleetNames.length)-1;//for testing only } else fleetSizes[position]++; //alert(name+' '+fleetSizes[position]); } //alert(vgap.myships[i].name.charAt(1)); } }; returnFleetName = function(ship) { if (ship.name.charAt(0)=='[') if (ship.name.indexOf(']')!=-1) return(ship.name.substring(1,ship.name.indexOf(']'))); return(-1) }; returnFlagshipID = function(fleet_name) { var index=fleetNames.indexOf(fleet_name); return(fleetFlagships[index]); }; returnFleetSize = function(fleet_name) { var index=fleetNames.indexOf(fleet_name); return (fleetSizes[index]); }; fleetBack = function(passed) { var ship=vgap.getShip(passed.id); var fleetName=returnFleetName(ship); var index; if (fleetName!=-1) { index=fleetNames.indexOf(fleetName); if(index>0) vgap.map.selectShip(fleetFlagships[index-1]); if(index==0) vgap.map.selectShip(fleetFlagships[fleetFlagships.length-1]); } else if (typeof fleetFlagShips[0] != 'undefined') vgap.map.selectShip(fleetFlagships[0]); }; fleetNext = function(passed) { var ship=vgap.getShip(passed.id); var fleetName=returnFleetName(ship); var index; if (fleetName!=-1) { index=fleetNames.indexOf(fleetName); var number=fleetFlagships.length; number--; //alert(fleetFlagships.length + " " + index + " " + number); if(index<number) vgap.map.selectShip(fleetFlagships[index+1]); if(index==number) vgap.map.selectShip(fleetFlagships[0]); } else if (typeof fleetFlagShips[0] != 'undefined') vgap.map.selectShip(fleetFlagships[0]); } var oldchangeShipName=vgapShipScreen.prototype.changeShipName; vgapShipScreen.prototype.changeShipName = function () { oldchangeShipName.apply(this, arguments); buildFleetList(); }; var oldprocessLoad=vgaPlanets.prototype.processLoad; vgaPlanets.prototype.processLoad = function (result){ oldprocessLoad.apply(this,arguments); buildFleetList(); }; //================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======================================= 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; }; /*var oldLoadCargo = vgapShipScreen.prototype.loadCargo; vgapShipScreen.prototype.loadCargo = function () { oldLoadCargo.apply(this, arguments); this.loadFleet(); }; */ } var script = document.createElement("script"); script.type = "application/javascript"; script.textContent = "(" + wrapper + ")();"; document.body.appendChild(script);