1package com.fs.starfarer.api.impl.campaign.events.nearby;
3import java.util.ArrayList;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.CustomCampaignEntityAPI;
9import com.fs.starfarer.api.campaign.FleetAssignment;
10import com.fs.starfarer.api.campaign.SectorEntityToken;
11import com.fs.starfarer.api.campaign.StarSystemAPI;
12import com.fs.starfarer.api.campaign.SectorEntityToken.VisibilityLevel;
13import com.fs.starfarer.api.campaign.rules.MemoryAPI;
14import com.fs.starfarer.api.fleet.FleetMemberAPI;
15import com.fs.starfarer.api.impl.campaign.CargoPodsEntityPlugin;
16import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
17import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI;
18import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.CargoPods;
19import com.fs.starfarer.api.util.Misc;
27 protected float dur = 30f + (float) Math.random() * 20f;
41 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE,
jumpPoint, 30f);
46 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE,
jumpPoint, 30f);
51 super.advance(amount);
53 if (!fleet.getMemoryWithoutUpdate().contains(
"$distress")) {
56 Misc.giveStandardReturnToSourceAssignments(fleet);
57 fleet.removeScript(
this);
62 boolean playerNearby = Misc.getDistanceToPlayerLY(fleet) <= 3f;
73 boolean seesPlayer =
false;
75 VisibilityLevel level = fleet.getVisibilityLevelOfPlayerFleet();
76 seesPlayer |= level == VisibilityLevel.COMPOSITION_DETAILS;
77 seesPlayer |= level == VisibilityLevel.COMPOSITION_AND_FACTION_DETAILS;
81 int crewToLeave = (int) (fleet.getFleetData().getMinCrew() * 0.5f);
88 VisibilityLevel level = fleet.getVisibilityLevelOfPlayerFleet();
89 if (level != VisibilityLevel.NONE &&
90 level != VisibilityLevel.SENSOR_CONTACT) {
92 fleet.clearAssignments();
93 fleet.addAssignment(FleetAssignment.INTERCEPT,
Global.
getSector().getPlayerFleet(), 30f,
"approaching your fleet");
99 CustomCampaignEntityAPI pods = Misc.addCargoPods(fleet.getContainingLocation(), fleet.getLocation());
102 pods.getCargo().addCrew(crew);
103 CargoPods.stabilizeOrbit(pods,
false);
111 MemoryAPI memory = fleet.getMemoryWithoutUpdate();
112 memory.unset(
"$distress");
113 memory.unset(MemFlags.MEMORY_KEY_NO_JUMP);
116 Misc.setFlagWithReason(fleet.getMemoryWithoutUpdate(), MemFlags.ENTITY_MISSION_IMPORTANT,
117 "distress",
false, 1000f);
120 public static void scuttleShips(CampaignFleetAPI fleet,
int crewFreed) {
121 List<FleetMemberAPI> members =
new ArrayList<FleetMemberAPI>(fleet.getFleetData().getMembersListCopy());
122 float scuttledCrewRoom = 0;
123 for (
int i = members.size() - 1; i >= 0 && scuttledCrewRoom < crewFreed; i--) {
124 FleetMemberAPI member = members.get(i);
125 fleet.removeFleetMemberWithDestructionFlash(member);
126 scuttledCrewRoom += member.getMinCrew();
static SectorAPI getSector()
void setExtraDays(float extraDays)
void advance(float amount)
void giveInitialAssignments()
SectorEntityToken jumpPoint
static void undistress(SectorEntityToken fleet)
static void scuttleShips(CampaignFleetAPI fleet, int crewFreed)
DistressCallNormalAssignmentAI(CampaignFleetAPI fleet, StarSystemAPI system, SectorEntityToken jumpPoint)
static void leaveCrewInPods(CampaignFleetAPI fleet, int crew)