1package com.fs.starfarer.api.impl.campaign.fleets;
3import org.lwjgl.util.vector.Vector2f;
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.CampaignFleetAPI;
7import com.fs.starfarer.api.campaign.FleetAssignment;
8import com.fs.starfarer.api.campaign.LocationAPI;
9import com.fs.starfarer.api.campaign.SectorEntityToken;
10import com.fs.starfarer.api.campaign.StarSystemAPI;
11import com.fs.starfarer.api.campaign.econ.MarketAPI;
12import com.fs.starfarer.api.impl.campaign.fleets.FleetFactory.MercType;
13import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
14import com.fs.starfarer.api.impl.campaign.ids.Factions;
15import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
16import com.fs.starfarer.api.impl.campaign.ids.Tags;
17import com.fs.starfarer.api.util.Misc;
18import com.fs.starfarer.api.util.WeightedRandomPicker;
36 if (target ==
null ||
true)
return null;
39 picker.
add(MercType.SCOUT, 10f);
40 picker.
add(MercType.BOUNTY_HUNTER, 10f);
41 picker.
add(MercType.PRIVATEER, 10f);
42 picker.
add(MercType.PATROL, 10f);
43 picker.
add(MercType.ARMADA, 3f);
45 MercType type = picker.
pick();
51 String fleetType = type.fleetType;
54 combat = Math.round(1f + (
float) Math.random() * 2f);
58 combat = Math.round(3f + (
float) Math.random() * 2f);
61 combat = Math.round(9f + (
float) Math.random() * 3f);
64 combat = Math.round(12f + (
float) Math.random() * 8f);
87 if (fleet ==
null || fleet.
isEmpty())
return null;
93 if (source ==
null)
return null;
96 boolean spawnAtSource =
true;
100 spawnAtSource = sourceToPlayer < targetToPlayer;
108 "orbiting " + source.
getName());
121 "traveling to the " + target.
getBaseName() +
" star system");
123 if ((
float) Math.random() > 0.75f) {
125 "raiding around the " + target.
getBaseName() +
" star system");
128 "raiding the " + target.
getBaseName() +
" star system");
131 "returning to " + source.
getName());
133 "offloading ill-gotten goods");
155 float w = 11f - market.getStabilityValue() + market.getSize();
156 if (w > weight) weight = w;
162 weight *= (bounties + 1);
165 picker.
add(system, weight);
167 return picker.
pick();
172 float combat = combatPoints;
174 float freighter = 0f;
176 MercType type = MercType.SCOUT;
177 if (combat >= 18f) type = MercType.ARMADA;
178 if (combat >= 12f) type = MercType.PATROL;
180 if ((
float) Math.random() < 0.5f) {
181 type = MercType.PRIVATEER;
183 type = MercType.BOUNTY_HUNTER;
189 String fleetType = type.fleetType;
192 route !=
null ? route.getMarket() :
null,
195 route !=
null ? route.getQualityOverride() :
null,
206 params.timestamp = route.getTimestamp();
211 if (fleet ==
null || fleet.
isEmpty())
return null;
217 if (source ==
null)
return null;
static SettingsAPI getSettings()
static SectorAPI getSector()
static CampaignFleetAPI createFleet(FleetParamsV3 params)
static CampaignFleetAPI createPirateFleet(int combatPoints, RouteData route, Vector2f locInHyper)
CampaignFleetAPI spawnFleet()
StarSystemAPI pickTargetSystem()
static final String PIRATES
static final String MEMORY_KEY_PIRATE
static final String MEMORY_KEY_ALLOW_LONG_PURSUIT
static MarketAPI getSourceMarket(CampaignFleetAPI fleet)
static float getSpawnChanceMult(Vector2f locInHyper)
static List< MarketAPI > getMarketsInLocation(LocationAPI location, String factionId)
static Vector2f pickHyperLocationNotNearPlayer(Vector2f from, float minDist)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static Vector2f getPointAtRadius(Vector2f from, float r)
GO_TO_LOCATION_AND_DESPAWN
int getMaxSensorRangeHyper()
float getFloat(String key)
void addAssignment(FleetAssignment assignment, SectorEntityToken target, float maxDurationInDays)
void setLocation(float x, float y)
void addEntity(SectorEntityToken entity)
SectorEntityToken createToken(float x, float y)
CampaignFleetAPI getPlayerFleet()
List< StarSystemAPI > getStarSystems()
LocationAPI getHyperspace()
LocationAPI getContainingLocation()
MemoryAPI getMemoryWithoutUpdate()
SectorEntityToken getHyperspaceAnchor()
SectorEntityToken getCenter()
Vector2f getLocationInHyperspace()
SectorEntityToken getPrimaryEntity()
void set(String key, Object value)