1package com.fs.starfarer.api.impl.campaign.fleets.misc;
3import java.util.ArrayList;
5import java.util.Random;
7import org.lwjgl.util.vector.Vector2f;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.BattleAPI;
11import com.fs.starfarer.api.campaign.CampaignFleetAPI;
12import com.fs.starfarer.api.campaign.SectorEntityToken;
13import com.fs.starfarer.api.campaign.econ.MarketAPI;
14import com.fs.starfarer.api.impl.campaign.fleets.RouteManager;
15import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
16import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
17import com.fs.starfarer.api.impl.campaign.fleets.misc.MiscFleetRouteManager.MiscRouteData;
18import com.fs.starfarer.api.impl.campaign.ids.Conditions;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
21import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
22import com.fs.starfarer.api.impl.campaign.ids.Tags;
23import com.fs.starfarer.api.impl.campaign.missions.DelayedFleetEncounter;
24import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
25import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
26import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
27import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
28import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
29import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
30import com.fs.starfarer.api.impl.campaign.shared.SharedData;
31import com.fs.starfarer.api.util.Misc;
32import com.fs.starfarer.api.util.WeightedRandomPicker;
53 if (shrines ==
null) {
64 if (from ==
null)
return null;
66 if (to ==
null)
return null;
80 MiscRouteData data = (MiscRouteData) route.getCustom();
105 MiscRouteData data =
new MiscRouteData(
getId());
120 data.smuggling =
true;
134 sizeBasis = from.
getSize() * 0.5f;
136 data.size = sizeBasis / 40f;
145 if (market.isHidden())
continue;
146 if (!market.hasSpaceport())
continue;
158 float mult = 1f - Math.min(0.99f, distLY / 10f);
160 String fid = market.getFactionId();
167 markets.
add(market, market.getSize() * mult);
173 return markets.
pick();
177 if (from ==
null)
return null;
182 if (!shrine.isAlive())
continue;
201 picker.
add(shrine, mult);
204 return picker.
pick();
210 if (route ==
null || !(route.getCustom() instanceof MiscRouteData))
return;
212 if (route.isExpired())
return;
217 MiscRouteData data = (MiscRouteData) route.getCustom();
236 return "preparing for pilgrimage to shrine on " + data.to.
getName();
240 return "disembarking pilgrims at " + data.from.
getName();
244 return "taking pilgrims to shrine on " + data.to.
getName();
248 return "returning pilgrims to " + data.from.
getName();
252 return "disembarking pilgrims at shrine on " + data.to.
getName();
256 return "embarking pilgrims for return voyage to " + data.from.
getName();
static SettingsAPI getSettings()
static SectorAPI getSector()
static RouteManager getInstance()
RouteData getRoute(String source, CampaignFleetAPI fleet)
TimeoutTracker< String > getTimeout(String creatorId)
String getRouteSourceId()
MiscRouteData createData(MarketAPI from, SectorEntityToken to)
int getMaxFleetsForThisCreator()
MiscRouteData createRouteParams(MiscFleetRouteManager manager, Random random)
String getAtDestLoadActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
List< SectorEntityToken > getShrines(MiscFleetRouteManager manager)
String getTravelToDestActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
void reportBattleOccurred(MiscFleetRouteManager manager, CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner, BattleAPI battle)
String getEndingActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
String getAtDestUnloadActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
String getStartingActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
MarketAPI pickSourceMarket(MiscFleetRouteManager manager)
SectorEntityToken pickDestShrine(MiscFleetRouteManager manager, MarketAPI from)
CampaignFleetAPI createFleet(MiscFleetRouteManager manager, RouteData route, Random random)
String getTravelReturnActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
static final String DECIVILIZED
static final String LUDDIC_PATH
static final String LUDDIC_CHURCH
static final String INDEPENDENT
static final String PATROL_MEDIUM
static final String SHRINE_PILGRIMS
static final String SHRINE_PILGRIM_FLEET
static final String MEMORY_KEY_SOURCE_MARKET
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, SectorEntityToken roughlyWhere)
void triggerSetStandardAggroInterceptFlags()
void setLocationCoreOnly(boolean allowInsidePopulatedSystems, String requireLargestMarketNotHostileToFaction)
CampaignFleetAPI createFleet()
void triggerSetFleetComposition(float freighterMult, float tankerMult, float transportMult, float linerMult, float utilityMult)
void autoAdjustFleetTypeName()
void triggerSetTraderFleet()
void triggerSetFleetSizeFraction(float fractionOfMax)
void triggerSetFleetOfficers(OfficerNum num, OfficerQuality quality)
void triggerSetFleetGenericHailPermanent(String commsTrigger)
void triggerFleetSetNoFactionInName()
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, StarSystemAPI roughlyWhere)
void triggerSetFleetMemoryValue(final String key, final Object value)
Set< String > getMarketsWithoutTradeFleetSpawn()
static SharedData getData()
static float getDistanceToPlayerLY(Vector2f locInHyper)
float getFloat(String key)
List< CampaignFleetAPI > getNonPlayerSideSnapshot()
boolean isPlayerInvolved()
boolean isHostileTo(FactionAPI other)
List< SectorEntityToken > getEntitiesWithTag(String tag)
void removeScriptsOfClass(Class c)
List< MarketAPI > getMarketsCopy()
boolean isPlanetConditionMarketOnly()
Vector2f getLocationInHyperspace()
boolean hasCondition(String id)