So..I make this file and place it in scripts
package com.fs.starfarer.api.impl.campaign.fleets;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.CampaignFleetAPI;
import com.fs.starfarer.api.campaign.FleetAssignment;
import com.fs.starfarer.api.campaign.FleetDataAPI;
import com.fs.starfarer.api.campaign.LocationAPI;
import com.fs.starfarer.api.campaign.SectorEntityToken;
import com.fs.starfarer.api.fleet.FleetMemberAPI;
import com.fs.starfarer.api.fleet.FleetMemberType;
import com.fs.starfarer.api.impl.campaign.ids.Factions;
public class CustomFleets {
/**
* To add a new fleet:
* 1) Make a copy of this method
* 2) Call it from spawn()
*/
private void spawnVNSFleet() {
CampaignFleetAPI fleet = Global.getFactory().createEmptyFleet(Factions.VNS, "1st Fleet", true);
FleetDataAPI data = fleet.getFleetData();
FleetMemberAPI member = null;
// add a fleet member with a custom name
member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "archangel_standard");
member.setShipName("VNS Archangel");
data.addFleetMember(member);
// add a ship and a fighter
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_avenger_mk2_strikeE"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_prometheus_standard"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_dedalus_standard"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_fury_std"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_cobra2_assault2"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_cobra2_assault2"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.FIGHTER_WING, "ASF14_wing"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.FIGHTER_WING, "ASF14_wing"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.FIGHTER_WING, "PhnI_Spec_wing"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.FIGHTER_WING, "PhnI_Spec_wing"));
data.addFleetMember(Global.getFactory().createFleetMember(FleetMemberType.FIGHTER_WING, "Armageddon_wing"));
// makes fleet not need supplies or fuel or crew
FleetFactory.finishAndSync(fleet);
// add fleet to a star system and set its location
LocationAPI location = Global.getSector().getStarSystem("vanyar");
location.addEntity(fleet);
SectorEntityToken planet = location.getEntityById("avalon");
fleet.setLocation(planet.getLocation().x, planet.getLocation().y - 500);
// give the fleet an assignment (1000000f days ~= forever)
// the fleet tooltip will show it as "<relationship level>, doing something" - i.e. "Neutral, doing something"
fleet.getAI().addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, planet, 1000000f, "defending Avalon", null);
}
/**
* This is called from CoreCampaignPluginImpl.onNewGameAfterTimePass().
*/
public void spawn() {
spawnVNSFleet();
}
}
doesn't work. Java compile error.
Can anyone help?
Look at the miner spawning function. It manually adds a couple of specific mining ships to the fleet by using this:
FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "ftg5-min-harvester_variant");
You can use the basic FleetMemberAPI functions to add a name, crew level and even a specific person to that ship (and many other options). For example, to set the specific name you`ll have to write: member.setShipName("new_ship_name");
Here is a pic with most of the available options for the ship created this way:
Spoiler
(http://www.lordsofthestars.com/other/Sector/member.jpg)
After you`ve done adding stuff to this ship don`t forget to add it to a fleet like this:
miner_fleet.getFleetData().addFleetMember(member);
Do I have to do the whole
FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "");
vns_firstfleet.getFleetData().addFleetMember(member);
For every single ship I want to specify by varriant? Or can I do like in the below code?
public static void vnsmain_spawner()
{
int vns_mainfleet = getSector().getEntitiesWithTag("vns_mainfleet").size();
String array [] = isa_mining_sites;
if (vns_mainfleet < 1)
{
String dest_name = "vaynar";
String home_name = "avalon";
SectorEntityToken home = getSector().getEntityById(home_name);
SectorEntityToken dest = getSector().getEntityById(dest_name);
home = getSector().getEntityById("avalon");
log.info("Spawning VNS main fleet in Vaynar.");
CampaignFleetAPI vns_firstfleet = FleetFactory.createGenericFleet("VNS", "1st Fleet", 1, 250);
vns_firstfleet.addTag("vns_mainfleet");
getSector().getFaction("VNS").pickShipAndAddToFleet(ShipRoles.FREIGHTER_MEDIUM, 1, vns_firstfleet);
getSector().getFaction("VNS").pickShipAndAddToFleet(ShipRoles.TANKER_MEDIUM, 1, vns_firstfleet);
FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_archangel_standard");
member.setShipName("VNS Archangel");
member.setFlagship(true);
vns_firstfleet.getFleetData().addFleetMember(member);
FleetMemberAPI member2 = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_cobra2_assault2");
vns_firstfleet.getFleetData().addFleetMember(member2);
FleetMemberAPI member3 = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_cobrax_advanced");
vns_firstfleet.getFleetData().addFleetMember(member3);
FleetMemberAPI member4 = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_cobrax_advanced");
vns_firstfleet.getFleetData().addFleetMember(member4);
FleetMemberAPI member5 = Global.getFactory().createFleetMember(FleetMemberType.SHIP, "vns_dedalus_standard");
vns_firstfleet.getFleetData().addFleetMember(member5);
FleetMemberAPI member6 = Global.getFactory().createFleetMember(FleetMemberType.FIGHTER_WING, "ASF14E_wing");
vns_firstfleet.getFleetData().addFleetMember(member6);
FleetMemberAPI member7 = Global.getFactory().createFleetMember(FleetMemberType.FIGHTER_WING, "PhnI_Spec_wing");
vns_firstfleet.getFleetData().addFleetMember(member7);
vns_firstfleet.getCargo().addCrew(CargoAPI.CrewXPLevel.ELITE, (int)(vns_firstfleet.getCargo().getMaxPersonnel()));
vns_firstfleet.getCargo().addSupplies(vns_firstfleet.getCargo().getMaxCapacity()/3);
vns_firstfleet.getCargo().addFuel(vns_firstfleet.getCargo().getMaxFuel());
vns_firstfleet.getFleetData().sort();
FleetFactory.finishAndSync(vns_firstfleet);
home.getContainingLocation().addEntity(vns_firstfleet);
vns_firstfleet.setLocation(home.getLocation().x + 0, home.getLocation().y + 0);
vns_firstfleet.addAssignment(FleetAssignment.ORBIT_PASSIVE, home, 3, "preparing for duty");
vns_firstfleet.addAssignment(FleetAssignment.DEFEND_LOCATION, home, 14, "patrolling around "+home.getName());
vns_firstfleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, home, 3, "standing down from duty");
vns_firstfleet.addAssignment(FleetAssignment.GO_TO_LOCATION_AND_DESPAWN, home, 1000, "returning to "+home.getName());
vns_firstfleet.setPreferredResupplyLocation(home);
log.info("Spawned VNS main fleet in Vaynar");
}
}
EDIT:
After several trials and fixes, the game didn't crash.
Still, is there a simpler way to add ships, wihtout having to go member1, member2, member3, etc...