1package com.fs.starfarer.api.impl.campaign.fleets;
3import java.util.Random;
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.CampaignFleetAPI;
7import com.fs.starfarer.api.campaign.SectorEntityToken;
8import com.fs.starfarer.api.campaign.econ.MarketAPI;
9import com.fs.starfarer.api.impl.campaign.fleets.FleetFactory.MercType;
10import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.OptionalFleetData;
11import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
12import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
13import com.fs.starfarer.api.impl.campaign.ids.Factions;
14import com.fs.starfarer.api.impl.campaign.ids.Tags;
15import com.fs.starfarer.api.impl.campaign.intel.SystemBountyManager;
16import com.fs.starfarer.api.util.Misc;
17import com.fs.starfarer.api.util.WeightedRandomPicker;
34 if (from ==
null)
return;
37 if (to ==
null)
return;
39 Long seed =
new Random().nextLong();
42 OptionalFleetData extra =
new OptionalFleetData(from);
46 float orbitDays = 2f + (float) Math.random() * 3f;
47 float deorbitDays = 2f + (float) Math.random() * 3f;
48 float patrolDays = 2f + (float) Math.random() * 3f;
51 if ((
float) Math.random() > 0.25f && to.
getStarSystem() !=
null) {
52 if ((
float) Math.random() > 0.25f) {
61 route.addSegment(
new RouteSegment(
ROUTE_PATROL, patrolDays, target));
66 route.addSegment(
new RouteSegment(
ROUTE_PATROL, patrolDays, target));
74 picker.
add(MercType.SCOUT, 10f);
75 picker.
add(MercType.BOUNTY_HUNTER, 10f);
76 picker.
add(MercType.PRIVATEER, 10f);
77 picker.
add(MercType.PATROL, 10f);
78 picker.
add(MercType.ARMADA, 3f);
79 MercType type = picker.
pick();
84 Random random = route.getRandom();
91 String fleetType = type.fleetType;
94 combat = Math.round(1f + random.nextFloat() * 2f);
98 combat = Math.round(3f + random.nextFloat() * 2f);
101 combat = Math.round(9f + random.nextFloat() * 3f);
102 tanker = Math.round(random.nextFloat()) * 5f;
105 combat = Math.round(10f + random.nextFloat() * 4f);
106 tanker = Math.round(random.nextFloat()) * 10f;
107 freighter = Math.round(random.nextFloat()) * 10f;
117 route.getQualityOverride() + 0.2f,
127 params.timestamp = route.getTimestamp();
128 params.random = random;
131 if (fleet ==
null || fleet.
isEmpty())
return null;
134 fleet.
setFacing((
float) Math.random() * 360f);
149 if (market.isHidden())
continue;
153 if (!market.hasSpaceport())
continue;
168 float w = market.getStabilityValue() + market.getSize();
171 picker.
add(market, w);
173 return picker.
pick();
185 if (market.getStarSystem() ==
null)
continue;
186 if (market.isHidden())
continue;
193 if (dist < 1000) dist = 1000;
194 float weight = 10000f / dist;
200 picker.
add(market, weight);
217 return "mercs_global";
static SettingsAPI getSettings()
static SectorAPI getSector()
static CampaignFleetAPI createFleet(FleetParamsV3 params)
boolean shouldRepeat(RouteData route)
static final Integer ROUTE_STAND_DOWN
void addRouteFleetIfPossible()
static final Integer ROUTE_PATROL
boolean shouldCancelRouteAfterDelayCheck(RouteData route)
CampaignFleetAPI spawnFleet(RouteData route)
MercType pickFleetType(Random random)
void reportAboutToBeDespawnedByRouteManager(RouteData route)
static final Integer ROUTE_PREPARE
MarketAPI pickNearbyMarketToDefend(MarketAPI source)
static final Integer ROUTE_TRAVEL
String getRouteSourceId()
static final Integer ROUTE_RETURN
RouteData addRoute(String source, MarketAPI market, Long seed, OptionalFleetData extra, RouteFleetSpawner spawner)
static RouteManager getInstance()
static final String PIRATES
static final String INDEPENDENT
boolean isActive(MarketAPI market)
static SystemBountyManager getInstance()
static float getSpawnChanceMult(Vector2f locInHyper)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
float getFloat(String key)
void setLocation(float x, float y)
void addEntity(SectorEntityToken entity)
void addScript(EveryFrameScript script)
void setFacing(float facing)
SectorEntityToken getHyperspaceAnchor()
SectorEntityToken getCenter()
List< MarketAPI > getMarketsCopy()
LocationAPI getContainingLocation()
Vector2f getLocationInHyperspace()
StarSystemAPI getStarSystem()
SectorEntityToken getPrimaryEntity()