1package com.fs.starfarer.api.impl.campaign.fleets;
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.campaign.CampaignFleetAPI;
5import com.fs.starfarer.api.campaign.StarSystemAPI;
6import com.fs.starfarer.api.campaign.econ.MarketAPI;
7import com.fs.starfarer.api.campaign.econ.MarketConditionAPI;
8import com.fs.starfarer.api.impl.campaign.fleets.FleetFactory.MercType;
9import com.fs.starfarer.api.impl.campaign.ids.Conditions;
10import com.fs.starfarer.api.impl.campaign.ids.Factions;
11import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
12import com.fs.starfarer.api.impl.campaign.intel.SystemBountyManager;
13import com.fs.starfarer.api.impl.campaign.intel.bases.PirateActivity;
14import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseIntel.PirateBaseTier;
15import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager;
16import com.fs.starfarer.api.util.Misc;
43 super.advance(amount);
52 float bountyMult = largestBounty ==
null ? 0 : largestBounty.
getSize();
54 float desiredNumFleets = 1f;
56 desiredNumFleets += tierMult > 0 ? 3f + tierMult : 0;
57 desiredNumFleets += bountyMult;
59 return (
int) Math.round(desiredNumFleets);
63 if (tier ==
null)
return 0f;
64 return tier.ordinal() + 1f;
70 if (market.isHidden())
continue;
87 boolean bounty =
false;
90 if (market.isHidden())
continue;
95 if (market.getSize() > maxSize) {
96 maxSize = market.getSize();
100 if (!bounty) largest =
null;
106 if (system ==
null)
return null;
109 if (player ==
null)
return null;
122 float bountyMult = 0f;
123 if (largestBounty !=
null) {
124 bountyMult = largestBounty.
getSize();
129 float bonus = tierMult + bountyMult;
133 if (timeFactor < 0) timeFactor = 0;
134 if (timeFactor > 1) timeFactor = 1;
137 if (earlyTimeFactor < 0) earlyTimeFactor = 0;
138 if (earlyTimeFactor > 1) earlyTimeFactor = 1;
142 float r = (float) Math.random();
147 float fp = (10f + bonus) * earlyTimeFactor +
148 (5f + bonus) * (0.5f + 0.5f * (float) Math.random()) +
149 50f * (0.5f + 0.5f * r) * timeFactor;
154 fp += ((desired - 2) * (0.5f + (float) Math.random() * 0.5f)) * 2f * timeFactor;
157 if (fp < 10) fp = 10;
161 type = MercType.SCOUT;
162 }
else if (fp < 75) {
163 type = MercType.PRIVATEER;
164 }
else if (fp < 125) {
165 type = MercType.PATROL;
167 type = MercType.ARMADA;
170 String fleetType = type.fleetType;
175 if (type == MercType.PATROL || type == MercType.ARMADA) {
176 tanker = combat * 0.1f;
179 combat = Math.round(combat);
180 tanker = Math.round(tanker);
196 params.ignoreMarketFleetSizeMult =
true;
197 if (timeFactor <= 0) {
198 params.maxShipSize = 1;
202 if (fleet ==
null || fleet.
isEmpty())
return null;
static SectorAPI getSector()
void setLocationAndOrders(CampaignFleetAPI fleet, float probStartInHyper, float probStayInHyper)
StarSystemAPI currSpawnLoc
CampaignFleetAPI spawnFleetImpl()
float getMultForTier(PirateBaseTier tier)
PirateBaseTier getPirateActivityTier()
int getDesiredNumFleetsForSpawnLocation()
boolean hasPirateActivity()
void advance(float amount)
MarketAPI getLargestMarketIfSystemHasBounty()
static CampaignFleetAPI createFleet(FleetParamsV3 params)
static final String PIRATE_ACTIVITY
static final String PIRATES
static final String PLAYER
static final String MEMORY_KEY_PIRATE
static final String FLEET_NO_MILITARY_RESPONSE
boolean isActive(MarketAPI market)
static SystemBountyManager getInstance()
PirateBaseIntel getIntel()
static PirateBaseManager getInstance()
static List< MarketAPI > getMarketsInLocation(LocationAPI location, String factionId)
CampaignFleetAPI getPlayerFleet()
MemoryAPI getMemoryWithoutUpdate()
List< MarketAPI > getMarkets(LocationAPI loc)
MarketConditionPlugin getPlugin()
void set(String key, Object value)