1package com.fs.starfarer.api.impl.campaign.fleets;
3import java.util.LinkedHashMap;
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.CampaignFleetAPI;
7import com.fs.starfarer.api.campaign.StarSystemAPI;
8import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI;
9import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.EncounterOption;
10import com.fs.starfarer.api.campaign.econ.MarketAPI;
11import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
12import com.fs.starfarer.api.impl.campaign.ids.Tags;
13import com.fs.starfarer.api.impl.campaign.tutorial.TutorialMissionIntel;
14import com.fs.starfarer.api.util.IntervalUtil;
15import com.fs.starfarer.api.util.Misc;
16import com.fs.starfarer.api.util.TimeoutTracker;
28 public static boolean DEBUG =
false;
30 public static final String
KEY_SYSTEM =
"$core_disposableFleetSpawnSystem";
31 public static final String
KEY_SPAWN_FP =
"$core_disposableFleetSpawnFP";
37 protected LinkedHashMap<String, TimeoutTracker<Boolean>>
recentSpawns =
new LinkedHashMap<String, TimeoutTracker<Boolean>>();
50 if (sysId ==
null) sysId = system.
getName();
51 return "$core_recentSpawn_" +
getSpawnId() +
"_" + sysId;
64 if (system ==
null)
return 0f;
90 if (option == EncounterOption.DISENGAGE)
return true;
117 super.advance(amount);
121 if (player ==
null)
return;
138 for (ManagedFleetData data :
active) {
145 float fp = data.fleet.getFleetPoints();
146 float spawnFP = data.fleet.getMemoryWithoutUpdate().getFloat(
KEY_SPAWN_FP);
147 if (fp < spawnFP * 0.33f) {
171 System.out.println(
"No target system, spawnRateMult is 1");
180 float activeInSystem = 0f;
181 for (ManagedFleetData data :
active) {
194 System.out.println(String.format(
"ID: %s, system: %s, recent: %s, desired: %s, spawnRateMult: %s",
198 "" + desiredNumFleets,
214 if (player ==
null)
return null;
216 float minDist = Float.MAX_VALUE;
218 if (market.isHidden())
continue;
219 if (market.getStarSystem() !=
null && market.getStarSystem().hasTag(
Tags.
SYSTEM_ABYSSAL))
continue;
221 if (market.isPlayerOwned() && market.getSize() <= 3)
continue;
222 if (!market.hasSpaceport())
continue;
228 if (distToPlayerLY < minDist && market.getStarSystem() !=
null) {
229 if (market.getStarSystem().getStar() !=
null) {
230 if (market.getStarSystem().getStar().getSpec().isPulsar())
continue;
233 nearest = market.getStarSystem();
234 minDist = distToPlayerLY;
274 return "traveling to the " + system.
getBaseName() +
" star system";
279 String verb =
"raiding";
280 if (patrol) verb =
"patrolling";
281 return verb +
" the " + system.
getBaseName() +
" star system";
286 String verb =
"raiding";
287 if (patrol) verb =
"patrolling";
288 return verb +
" around the " + system.
getBaseName() +
" star system";
294 boolean forceStartInHyper =
false;
303 if ((
float) Math.random() < probStartInHyper || forceStartInHyper) {
static SectorAPI getSector()
List< ManagedFleetData > active
void addRecentSpawn(StarSystemAPI system)
static final float DESPAWN_RANGE_LY
String getActionOutsideText(StarSystemAPI system, CampaignFleetAPI fleet)
void advance(float amount)
static final String KEY_SYSTEM
abstract int getDesiredNumFleetsForSpawnLocation()
static final String KEY_SPAWN_FP
boolean isOkToDespawnAssumingNotPlayerVisible(CampaignFleetAPI fleet)
StarSystemAPI pickCurrentSpawnLocation()
CampaignFleetAPI spawnFleet()
void setLocationAndOrders(CampaignFleetAPI fleet, float probStartInHyper, float probStayInHyper)
boolean withReturnToSourceAssignments()
abstract CampaignFleetAPI spawnFleetImpl()
abstract String getSpawnId()
StarSystemAPI pickNearestPopulatedSystem()
StarSystemAPI currSpawnLoc
LinkedHashMap< String, TimeoutTracker< Boolean > > recentSpawns
String getSpawnKey(StarSystemAPI system)
float getRecentSpawnsForSystem(StarSystemAPI system)
String getActionInsideText(StarSystemAPI system, CampaignFleetAPI fleet)
void updateSpawnRateMult()
void currSpawnLocChanged()
String getTravelText(StarSystemAPI system, CampaignFleetAPI fleet)
float getExpireDaysPerFleet()
StarSystemAPI getCurrSpawnLoc()
static final float MAX_RANGE_FROM_PLAYER_LY
static float SPAWN_DIST_LY
static final String MEMORY_KEY_PATROL_FLEET
static boolean isTutorialInProgress()
void advance(float amount)
static float getDistanceLY(SectorEntityToken from, SectorEntityToken to)
static void giveStandardReturnToSourceAssignments(CampaignFleetAPI fleet)
static boolean isFleetReturningToDespawn(CampaignFleetAPI fleet)
float convertToDays(float realSeconds)
CampaignFleetAIAPI getAI()
boolean isInHyperspaceTransition()
void addEntity(SectorEntityToken entity)
CampaignFleetAPI getPlayerFleet()
CampaignClockAPI getClock()
boolean isInNewGameAdvance()
MemoryAPI getMemoryWithoutUpdate()
LocationAPI getHyperspace()
void addScript(EveryFrameScript script)
Vector2f getLocationInHyperspace()
MemoryAPI getMemoryWithoutUpdate()
String getOptionalUniqueId()
float getDaysSinceLastPlayerVisit()
EncounterOption pickEncounterOption(FleetEncounterContextPlugin context, CampaignFleetAPI otherFleet)
List< MarketAPI > getMarketsCopy()
float getFloat(String key)
String getString(String key)
float getExpire(String key)
void expire(String key, float days)
void set(String key, Object value)
boolean getBoolean(String key)