Starsector API
Loading...
Searching...
No Matches
IsSoughtByPatrols.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
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.rules.MemoryAPI;
10import com.fs.starfarer.api.fleet.FleetMemberAPI;
11import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
12import com.fs.starfarer.api.util.Misc;
13import com.fs.starfarer.api.util.Misc.Token;
14
19
20
21 public static boolean areFactionPatrolsSeekingPlayer(String factionId) {
22 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
23
24 for (CampaignFleetAPI fleet : playerFleet.getContainingLocation().getFleets()) {
25 if (!fleet.getFaction().getId().equals(factionId)) continue;
26 if (!isPatrol(fleet)) continue;
27 if (fleet.getFaction().isPlayerFaction()) continue;
28 if (fleet.getBattle() != null) continue;
29
30 MemoryAPI mem = fleet.getMemoryWithoutUpdate();
31
32 boolean caresAboutTransponder = Misc.caresAboutPlayerTransponder(fleet);
33
34 float dist = Misc.getDistance(fleet.getLocation(), playerFleet.getLocation());
35 if (dist > 1000f) continue;
36
37 if ((mem.contains(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_OFF) && caresAboutTransponder) ||
38 mem.contains(MemFlags.MEMORY_KEY_PURSUE_PLAYER)) {
39 return true;
40 }
41
42 }
43
44 return false;
45 }
46
47 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
48
49 String factionId = params.get(0).getString(memoryMap);
50
51 return areFactionPatrolsSeekingPlayer(factionId);
52//
53// CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
54//
55// for (CampaignFleetAPI fleet : playerFleet.getContainingLocation().getFleets()) {
56// if (!fleet.getFaction().getId().equals(factionId)) continue;
57// if (!isPatrol(fleet)) continue;
58// if (fleet.getFaction().isPlayerFaction()) continue;
59// if (fleet.getBattle() != null) continue;
60//
61// MemoryAPI mem = fleet.getMemoryWithoutUpdate();
62//
71// boolean caresAboutTransponder = Misc.caresAboutPlayerTransponder(fleet);
72//
73// //VisibilityLevel level = playerFleet.getVisibilityLevelTo(fleet);
74//
75// float dist = Misc.getDistance(fleet.getLocation(), playerFleet.getLocation());
76// if (dist > 1000f) continue;
77//
78// if ((mem.contains(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_OFF) && caresAboutTransponder) ||
79// mem.contains(MemFlags.MEMORY_KEY_PURSUE_PLAYER)) {
80// return true;
81// }
82//
83// }
84//
85// return false;
86 }
87
88 public static boolean isPatrol(CampaignFleetAPI fleet) {
89 if (!fleet.getMemoryWithoutUpdate().contains(MemFlags.MEMORY_KEY_PATROL_FLEET)) {
90 return false;
91 }
92
93 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
94 if (!member.isCivilian()) return true;
95 }
96
97 return false;
98 }
99}
100
101
102
103
static SectorAPI getSector()
Definition Global.java:59
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)