112 if (data ==
null)
return;
113 if (
entity ==
null)
return;
115 if (data.fleetId !=
null) {
116 SectorEntityToken found =
Global.
getSector().getEntityById(data.fleetId);
117 if (found instanceof CampaignFleetAPI) {
118 CampaignFleetAPI fleet = (CampaignFleetAPI) found;
119 FleetMemberAPI flagship = fleet.getFlagship();
120 boolean makeAggressive =
false;
121 if (flagship !=
null) {
122 makeAggressive = flagship.getVariant().hasHullMod(HullMods.AUTOMATED);
129 if (data.useAllFleetsInRange !=
null && data.useAllFleetsInRange) {
130 boolean foundSomeFleets =
false;
131 for (CampaignFleetAPI fleet :
entity.getContainingLocation().getFleets()) {
132 if (data.nearbyFleetFaction !=
null &&
133 !data.nearbyFleetFaction.equals(fleet.getFaction().getId())) {
137 if (fleet.isStationMode())
continue;
139 if (fleet.getMemoryWithoutUpdate().is(MemFlags.MEMORY_KEY_TRADE_FLEET,
true))
continue;
141 float dist = Misc.getDistance(fleet.getLocation(),
entity.getLocation());
142 if (dist < data.maxRange) {
143 FleetMemberAPI flagship = fleet.getFlagship();
144 boolean makeAggressive =
false;
145 if (flagship !=
null) {
146 makeAggressive = flagship.getVariant().hasHullMod(HullMods.AUTOMATED);
149 foundSomeFleets =
true;
152 if (foundSomeFleets)
return;
155 if (data.useClosestFleetInRange !=
null && data.useClosestFleetInRange) {
156 CampaignFleetAPI closest =
null;
157 float minDist = Float.MAX_VALUE;
158 for (CampaignFleetAPI fleet :
entity.getContainingLocation().getFleets()) {
159 if (data.nearbyFleetFaction !=
null &&
160 !data.nearbyFleetFaction.equals(fleet.getFaction().getId())) {
164 if (fleet.isStationMode())
continue;
166 if (fleet.getMemoryWithoutUpdate().is(MemFlags.MEMORY_KEY_TRADE_FLEET,
true))
continue;
168 float dist = Misc.getDistance(fleet.getLocation(),
entity.getLocation());
169 if (dist < data.maxRange && dist < minDist) {
174 if (closest !=
null) {
175 FleetMemberAPI flagship = closest.getFlagship();
176 boolean makeAggressive =
false;
177 if (flagship !=
null) {
178 makeAggressive = flagship.getVariant().hasHullMod(HullMods.AUTOMATED);
185 if (data.params !=
null) {
186 CampaignFleetAPI fleet = FleetFactoryV3.createFleet(data.params);
187 if (fleet ==
null || fleet.isEmpty())
return;
189 if (Factions.REMNANTS.equals(fleet.getFaction().getId())) {
190 RemnantSeededFleetManager.initRemnantFleetProperties(
null, fleet,
false);
192 fleet.setTransponderOn(
false);
193 fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_PIRATE,
true);
194 Misc.makeNoRepImpact(fleet,
"tTrap");
197 float range = data.minRange +
random.nextFloat() * (data.maxRange - data.minRange);
198 Vector2f loc = Misc.getPointAtRadius(
entity.getLocation(), range);
200 entity.getContainingLocation().addEntity(fleet);
201 fleet.setLocation(loc.x, loc.y);
203 FleetMemberAPI flagship = fleet.getFlagship();
204 boolean makeAggressive =
false;
205 if (flagship !=
null) {
206 makeAggressive = flagship.getVariant().hasHullMod(HullMods.AUTOMATED);
213 Misc.giveStandardReturnToSourceAssignments(fleet,
false);
224 public static void makeFleetInterceptPlayer(CampaignFleetAPI fleet,
boolean makeAggressive,
boolean makeLowRepImpact,
boolean makeHostile,
float interceptDays) {
227 if (fleet.getAI() ==
null) {
229 fleet.setLocation(fleet.getLocation().x, fleet.getLocation().y);
232 if (makeAggressive) {
233 float expire = fleet.getMemoryWithoutUpdate().getExpire(MemFlags.MEMORY_KEY_MAKE_AGGRESSIVE);
234 fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_MAKE_AGGRESSIVE,
true, Math.max(
expire, interceptDays));
235 fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_MAKE_AGGRESSIVE_ONE_BATTLE_ONLY,
true, Math.max(
expire, interceptDays));
239 fleet.getMemoryWithoutUpdate().unset(MemFlags.MEMORY_KEY_MAKE_ALLOW_DISENGAGE);
240 fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_MAKE_HOSTILE,
true, interceptDays);
242 fleet.getMemoryWithoutUpdate().set(FleetAIFlags.PLACE_TO_LOOK_FOR_TARGET,
new Vector2f(
playerFleet.getLocation()), interceptDays);
244 if (makeLowRepImpact) {
245 Misc.makeLowRepImpact(fleet,
"ttSpecial");
248 if (fleet.getAI() instanceof ModularFleetAIAPI) {
249 ((ModularFleetAIAPI)fleet.getAI()).getTacticalModule().setTarget(
playerFleet);
252 fleet.addAssignmentAtStart(FleetAssignment.INTERCEPT,
playerFleet, interceptDays,
null);