Starsector API
Loading...
Searching...
No Matches
HostileFleetNearbyAndAware.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
2
3import java.util.List;
4import java.util.Map;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.SectorEntityToken.VisibilityLevel;
10import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
11import com.fs.starfarer.api.campaign.rules.MemoryAPI;
12import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
13import com.fs.starfarer.api.util.Misc;
14import com.fs.starfarer.api.util.Misc.Token;
15
20
21
22 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
23
24 //float range = params.get(0).getFloat(memoryMap);
25
26 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
27 for (CampaignFleetAPI fleet : playerFleet.getContainingLocation().getFleets()) {
28 if (fleet.getAI() == null) continue; // dormant Remnant fleets
29 if (fleet.getFaction().isPlayerFaction()) continue;
30 if (fleet.isStationMode()) continue;
31
32 if (!fleet.isHostileTo(playerFleet)) continue;
33 if (fleet.getBattle() != null) continue;
34
35 if (Misc.isInsignificant(fleet)) {
36 continue;
37 }
38
39
40 VisibilityLevel level = playerFleet.getVisibilityLevelTo(fleet);
41// MemoryAPI mem = fleet.getMemoryWithoutUpdate();
42// if (!mem.contains(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_OFF) &&
43// !mem.contains(MemFlags.MEMORY_KEY_PURSUE_PLAYER)) {
44// if (level == VisibilityLevel.NONE) continue;
45// }
46 if (level == VisibilityLevel.NONE) continue;
47
48 if (fleet.getFleetData().getMembersListCopy().isEmpty()) continue;
49
50 float dist = Misc.getDistance(playerFleet.getLocation(), fleet.getLocation());
51 if (dist > 1500f) continue;
52
53 //fleet.getAI().pickEncounterOption(null, playerFleet, true);
54 if (fleet.getAI() instanceof ModularFleetAIAPI) {
55 ModularFleetAIAPI ai = (ModularFleetAIAPI) fleet.getAI();
56 if (ai.getTacticalModule() != null &&
57 (ai.getTacticalModule().isFleeing() || ai.getTacticalModule().isMaintainingContact() ||
58 ai.getTacticalModule().isStandingDown())) {
59 continue;
60 }
61 }
62
63 return true;
64 }
65
66 return false;
67 }
68
69}
70
71
72
73
static SectorAPI getSector()
Definition Global.java:59
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)