/* * ISResMover - InterSector Resource Mover * * Author : Silent Rain * Version : 1.0.9 * Date : 03/13/2001 12:28 MST * */ import com.swath.*; import com.swath.cmd.*; public class ISResMover extends UserDefinedScript { private Parameter m_srcSec; private Parameter m_destSec; private Parameter m_srcPl; private Parameter m_destPl; private Parameter m_srcFuel; private Parameter m_srcOrgs; private Parameter m_srcEquip; private Parameter m_srcCols; private Parameter m_srcColsFrom; private Parameter m_destColsTo; private Parameter m_srcMoveVia; private Parameter m_destMoveVia; private Parameter m_numHopsToDest; private Parameter m_numHopsToSrc; public String getName() { return "ISResMover v1.0.9 [srain]"; } public boolean initScript() throws Exception { // Ensure we are at the right prompt. if (!atPrompt(Swath.PLANET_PROMPT)) return false; // Set the parameters. m_srcSec = new Parameter("Source sector: "); m_srcSec.setType(Parameter.INTEGER); m_srcSec.setInteger(Swath.main.currSector()); m_srcSec.setIntegerRange(1,5000); m_destSec = new Parameter("Destination sector: "); m_destSec.setType(Parameter.INTEGER); m_destSec.setInteger(Swath.main.currSector()); m_destSec.setIntegerRange(1,5000); m_srcPl = new Parameter("Source planet #: "); m_srcPl.setType(Parameter.INTEGER); m_destPl = new Parameter("Destination planet #: "); m_destPl.setType(Parameter.INTEGER); m_srcFuel = new Parameter("Fuel Ore: "); m_srcFuel.setType(Parameter.DOUBLE); m_srcFuel.setDouble(0); m_srcOrgs = new Parameter("Organics: "); m_srcOrgs.setType(Parameter.DOUBLE); m_srcOrgs.setDouble(0); m_srcEquip = new Parameter("Equipment: "); m_srcEquip.setType(Parameter.DOUBLE); m_srcEquip.setDouble(0); m_srcCols = new Parameter("Colonists: "); m_srcCols.setType(Parameter.DOUBLE); m_srcCols.setDouble(0); m_srcColsFrom = new Parameter("Move colonists from: "); m_srcColsFrom.setType(Parameter.CHOICE); m_srcColsFrom.addChoice(Swath.FUEL_ORE, "Fuel Ore"); m_srcColsFrom.addChoice(Swath.ORGANICS, "Organics"); m_srcColsFrom.addChoice(Swath.EQUIPMENT, "Equipment"); m_srcColsFrom.setCurrentChoice(Swath.FUEL_ORE); m_destColsTo = new Parameter("Move colonists to: "); m_destColsTo.setType(Parameter.CHOICE); m_destColsTo.addChoice(Swath.FUEL_ORE, "Fuel Ore"); m_destColsTo.addChoice(Swath.ORGANICS, "Organics"); m_destColsTo.addChoice(Swath.EQUIPMENT, "Equipment"); m_destColsTo.setCurrentChoice(Swath.FUEL_ORE); m_srcMoveVia = new Parameter("Move to destination via: "); m_srcMoveVia.setType(Parameter.CHOICE); m_srcMoveVia.addChoice(0, "Move"); m_srcMoveVia.addChoice(1, "Transwarp"); m_srcMoveVia.setCurrentChoice(1); m_destMoveVia = new Parameter("Move from destination via: "); m_destMoveVia.setType(Parameter.CHOICE); m_destMoveVia.addChoice(0, "Move"); m_destMoveVia.addChoice(1, "Transwarp"); m_destMoveVia.setCurrentChoice(1); m_numHopsToDest = new Parameter("Hops to destination sector: "); m_numHopsToDest.setType(Parameter.INTEGER); m_numHopsToDest.setInteger(0); m_numHopsToDest.setIntegerRange(0,40); m_numHopsToSrc = new Parameter("Hops to source sector: "); m_numHopsToSrc.setType(Parameter.INTEGER); m_numHopsToSrc.setInteger(0); m_numHopsToSrc.setIntegerRange(0,40); // Register parameters. registerParam(m_srcSec); registerParam(m_destSec); registerParam(m_srcPl); registerParam(m_destPl); registerParam(m_srcFuel); registerParam(m_srcOrgs); registerParam(m_srcEquip); registerParam(m_srcCols); registerParam(m_srcColsFrom); registerParam(m_destColsTo); registerParam(m_srcMoveVia); registerParam(m_destMoveVia); registerParam(m_numHopsToDest); registerParam(m_numHopsToSrc); // Return success. return true; } public boolean runScript() throws Exception { int emptyHolds; double remainFuel; double remainOrgs; double remainEquip; double remainCols; int totTwarpFuel; boolean twarp; double toTakeFuel; double toTakeOrgs; double toTakeEquip; double toTakeCols; int availHolds; // Initialize local variables. emptyHolds = Swath.ship.emptyHolds(); remainFuel = m_srcFuel.getDouble(); remainOrgs = m_srcOrgs.getDouble(); remainEquip = m_srcEquip.getDouble(); remainCols = m_srcCols.getDouble(); totTwarpFuel = 0; if(m_srcMoveVia.getCurrentChoice() == 1) { totTwarpFuel = 3 * m_numHopsToDest.getInteger(); } if(m_destMoveVia.getCurrentChoice() == 1) { totTwarpFuel = totTwarpFuel + (3 * m_numHopsToSrc.getInteger()); } twarp = (totTwarpFuel > 0); while ((remainFuel > 0) || (remainOrgs > 0) || (remainEquip > 0) || (remainCols > 0)) { // Clear the vars toTakeFuel = 0; toTakeOrgs = 0; toTakeEquip = 0; toTakeCols = 0; availHolds = emptyHolds - totTwarpFuel; // Load the holds. if(remainFuel > 0) { if(remainFuel <= availHolds) { toTakeFuel = toTakeFuel + remainFuel; availHolds = availHolds - (int)remainFuel; remainFuel = 0; } else { toTakeFuel = toTakeFuel + availHolds; remainFuel = remainFuel - availHolds; availHolds = 0; } } if(remainOrgs > 0) { if(remainOrgs <= availHolds) { toTakeOrgs = remainOrgs; availHolds = availHolds - (int)remainOrgs; remainOrgs = 0; } else { toTakeOrgs = toTakeOrgs + availHolds; remainOrgs = remainOrgs - availHolds; availHolds = 0; } } if(remainEquip > 0) { if(remainEquip <= availHolds) { toTakeEquip = remainEquip; availHolds = availHolds - (int)remainEquip; remainEquip = 0; } else { toTakeEquip = toTakeEquip + availHolds; remainEquip = remainEquip - availHolds; availHolds = 0; } } // Ensure that we are at least taking one of the above before loading. if ((toTakeFuel + toTakeOrgs + toTakeEquip + totTwarpFuel) > 0) { if ((toTakeFuel + totTwarpFuel) > 0) { TakeLeaveProducts.exec((int)toTakeFuel + totTwarpFuel, 0, 0); } if (toTakeOrgs > 0) { TakeLeaveProducts.exec(0, (int)toTakeOrgs, 0); } if (toTakeEquip > 0) { TakeLeaveProducts.exec(0, 0, (int)toTakeEquip); } } if(availHolds > 0) { if(remainCols <= availHolds) { toTakeCols = remainCols; availHolds = availHolds - (int)remainCols; remainCols = 0; } else { toTakeCols = toTakeCols + availHolds; remainCols = remainCols - availHolds; availHolds = 0; } } // Ensure that we are taking at least 1 colonist before grabbing them. if(toTakeCols > 0) { TakeLeaveColonists.exec((int)toTakeCols, m_srcColsFrom.getCurrentChoice()); } // Lift off of the planet LiftOff.exec(); // Move to destination sector if(m_srcMoveVia.getCurrentChoice() == 1) { TransWarp.exec(m_destSec.getInteger()); } else { Move.exec(m_destSec.getInteger()); } // Land on the destination planet Land.exec(m_destPl.getInteger()); // Unload holds and colonists. if((toTakeFuel + toTakeOrgs + toTakeEquip) > 0) { if(toTakeFuel > 0) { TakeLeaveProducts.exec((int)toTakeFuel*-1, 0, 0); } if(toTakeOrgs > 0) { TakeLeaveProducts.exec(0, (int)toTakeOrgs*-1, 0); } if(toTakeEquip > 0) { TakeLeaveProducts.exec(0,0, (int)toTakeEquip*-1); } } if(toTakeCols > 0) { TakeLeaveColonists.exec((int)toTakeCols * -1, m_destColsTo.getCurrentChoice()); } if((remainFuel > 0) || (remainOrgs > 0) || (remainEquip > 0) || (remainCols > 0)) { // Lift off of the planet. LiftOff.exec(); // Move to src sector if(m_destMoveVia.getCurrentChoice() == 1) { TransWarp.exec(m_srcSec.getInteger()); } else { Move.exec(m_srcSec.getInteger()); } // Land on source planet. Land.exec(m_srcPl.getInteger()); } } // Let everyone know we are cool. PrintText.exec("ISResMover v1.0.9 [srain]: Completed successfully!"); return true; } public void endScript(boolean finished) { } }