1package com.fs.starfarer.api.impl.campaign;
5import com.fs.starfarer.api.EveryFrameScript;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.FleetAssignment;
9import com.fs.starfarer.api.campaign.SectorEntityToken.VisibilityLevel;
10import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI;
11import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
12import com.fs.starfarer.api.campaign.econ.MarketAPI;
13import com.fs.starfarer.api.campaign.rules.MemoryAPI;
14import com.fs.starfarer.api.impl.campaign.events.BaseEventPlugin.MarketFilter;
15import com.fs.starfarer.api.impl.campaign.ids.Conditions;
16import com.fs.starfarer.api.impl.campaign.ids.Factions;
17import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
18import com.fs.starfarer.api.util.IntervalUtil;
19import com.fs.starfarer.api.util.Misc;
20import com.fs.starfarer.api.util.Misc.FleetFilter;
29 private float currDuration = 0f;
30 private float currElapsed = 0f;
42 if (!interval.intervalElapsed())
return;
44 final float MAX_RANGE_FROM_MARKET = 5000;
45 final float MAX_RANGE_FROM_PLAYER = 2000;
50 public boolean acceptMarket(
MarketAPI market) {
59 if (market ==
null)
return;
66 List<CampaignFleetAPI> patrols =
Misc.
findNearbyFleets(player, MAX_RANGE_FROM_PLAYER,
new FleetFilter() {
80 if (vis == VisibilityLevel.NONE)
return false;
85 if (patrols.isEmpty())
return;
87 float minDist = Float.MAX_VALUE;
89 float closestSuspicion = 0f;
93 if (dist < minDist || extra > closestSuspicion) {
95 closestSuspicion = extra;
100 if (closestPatrol ==
null)
return;
102 curr = closestPatrol;
104 float threshold = 0.05f;
107 suspicionLevel += closestSuspicion;
109 boolean doScan = (float) Math.random() < suspicionLevel * 5f && suspicionLevel >= threshold;
116 currDuration = 10f + (float) Math.random() * 5f;
126 if (suspicionLevel >= threshold) {
127 float timeoutDuration = 20f + (float) Math.random() * 10f;
143 if (currElapsed > currDuration) {
159 if (vis != VisibilityLevel.NONE) {
196 currDuration = currElapsed = 0f;
static SectorAPI getSector()
static final String MARKET_TIMEOUT_KEY
static final String SCAN_COMPLETE_KEY
void advance(float amount)
void maintainOngoingScan(float days)
static final String FREE_PORT
static final String CUSTOM_ALLOWS_TRANSPONDER_OFF_TRADE
static final String MEMORY_KEY_PATROL_FLEET
static final String MEMORY_KEY_PURSUE_PLAYER
static final String MEMORY_MARKET_SMUGGLING_SUSPICION_LEVEL
static final String PATROL_EXTRA_SUSPICION
static final String MEMORY_KEY_STICK_WITH_PLAYER_IF_ALREADY_TARGET
static final String MEMORY_KEY_PATROL_ALLOW_TOFF
void advance(float amount)
static MarketAPI getSourceMarket(CampaignFleetAPI fleet)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static boolean setFlagWithReason(MemoryAPI memory, String flagKey, String reason, boolean value, float expire)
static MarketAPI findNearestLocalMarket(SectorEntityToken token, float maxDist, MarketFilter filter)
static List< CampaignFleetAPI > findNearbyFleets(SectorEntityToken from, float maxRange, FleetFilter filter)
float convertToDays(float realSeconds)
CampaignFleetAIAPI getAI()
SectorEntityToken getInteractionTarget()
void setInteractionTarget(SectorEntityToken target)
boolean isInHyperspaceTransition()
boolean isHostileTo(SectorEntityToken other)
boolean getCustomBoolean(String key)
boolean isHostileTo(FactionAPI other)
boolean isPlayerFaction()
FleetAssignmentDataAPI getCurrentAssignment()
void removeFirstAssignmentIfItIs(FleetAssignment assignment)
CampaignFleetAPI getPlayerFleet()
CampaignClockAPI getClock()
VisibilityLevel getVisibilityLevelTo(SectorEntityToken other)
MemoryAPI getMemoryWithoutUpdate()
boolean isTransponderOn()
SectorEntityToken getTarget()
FleetAssignment getAssignment()
TacticalModulePlugin getTacticalModule()
SectorEntityToken getTarget()
void setTarget(SectorEntityToken target)
MemoryAPI getMemoryWithoutUpdate()
boolean hasCondition(String id)
float getFloat(String key)
boolean contains(String key)
void set(String key, Object value)
boolean getBoolean(String key)