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.FactionAPI;
9import com.fs.starfarer.api.campaign.FleetAssignment;
10import com.fs.starfarer.api.campaign.SectorEntityToken;
11import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.ActionType;
12import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI;
13import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
14import com.fs.starfarer.api.campaign.rules.MemoryAPI;
15import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
16import com.fs.starfarer.api.util.IntervalUtil;
17import com.fs.starfarer.api.util.Misc;
23 public static class MilitaryResponseParams {
24 public ActionType type;
25 public String responseReason;
30 public float responseFraction;
31 public float responseDuration;
32 public String travelText;
33 public String actionText;
35 public MilitaryResponseParams(ActionType type, String responseReason,
37 float responseFraction,
float responseDuration) {
39 this.responseReason = responseReason;
40 this.faction = faction;
42 this.responseFraction = responseFraction;
43 this.responseDuration = responseDuration;
51 protected MilitaryResponseParams
params;
73 if (
tracker.intervalElapsed()) {
91 if (fleet.
getBattle() !=
null)
return true;
113 float potentialFP = 0;
114 float respondingFP = 0f;
116 float closestDist = Float.MAX_VALUE;
122 float fp = other.getFleetPoints();
134 if (distOther < closestDist) {
135 closestDist = distOther;
136 closestNonResponder = other;
144 if (potentialFP > 0 &&
145 respondingFP / potentialFP < fraction &&
146 closestNonResponder == fleet) {
184 boolean firstOrbitPassive =
true;
192 firstOrbitPassive =
false;
203 if (fleet.
getAI() ==
null)
return false;
226 if (!(patrol || warFleet || pirate) || noMilitary)
return false;
232 return "$mrs_" +
params.responseReason;
240 memory.
set(key, curr +
params.responseFraction, 60f);
248 if (curr >
params.responseFraction) {
249 memory.
set(key, Math.max(0, curr -
params.responseFraction), 60f);
260 if (curr <
params.responseFraction) curr =
params.responseFraction;
261 if (curr < 1) curr = 1;
static SectorAPI getSector()
void advance(float amount)
boolean isTemporarilyNotResponding(CampaignFleetAPI fleet)
MilitaryResponseParams getParams()
static String RESPONSE_ASSIGNMENT
boolean isResponding(CampaignFleetAPI fleet)
String getResponseTotalKey()
void setElapsed(float elapsed)
void addToResponseTotal()
MilitaryResponseParams params
void respond(CampaignFleetAPI fleet)
void removeFromResponseTotal()
void unrespond(CampaignFleetAPI fleet)
boolean couldRespond(CampaignFleetAPI fleet)
MilitaryResponseScript(MilitaryResponseParams params)
void seeIfFleetShouldRespond(CampaignFleetAPI fleet)
static final String FLEET_MILITARY_RESPONSE
static final String MEMORY_KEY_WAR_FLEET
static final String MEMORY_KEY_PATROL_FLEET
static final String MEMORY_KEY_PIRATE
static final String FLEET_NO_MILITARY_RESPONSE
static final String FLEET_BUSY
void advance(float amount)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static boolean flagHasReason(MemoryAPI memory, String flagKey, String reason)
static boolean setFlagWithReason(MemoryAPI memory, String flagKey, String reason, boolean value, float expire)
GO_TO_LOCATION_AND_DESPAWN
float convertToDays(float realSeconds)
CampaignFleetAIAPI getAI()
MemoryAPI getMemoryWithoutUpdate()
FleetAssignmentDataAPI getCurrentAssignment()
void addAssignmentAtStart(FleetAssignment assignment, SectorEntityToken target, float maxDurationInDays, String actionText, Script onCompletion)
List< CampaignFleetAPI > getFleets()
CampaignClockAPI getClock()
LocationAPI getContainingLocation()
MemoryAPI getMemoryWithoutUpdate()
boolean areAssignmentsFrozen()
List< FleetAssignmentDataAPI > getAssignmentsCopy()
void removeAssignment(FleetAssignmentDataAPI assignment)
FleetAssignment getAssignment()
void setCustom(Object custom)
AssignmentModulePlugin getAssignmentModule()
float getFloat(String key)
void set(String key, Object value)
boolean getBoolean(String key)