22 interval.advance(days);
23 if (!interval.intervalElapsed())
return;
25 MemoryAPI mem =
fleet.getMemoryWithoutUpdate();
27 if (
ability.isActiveOrInProgress()) {
28 mem.set(FleetAIFlags.HAS_SPEED_PENALTY,
true, 0.2f);
29 mem.set(FleetAIFlags.HAS_VISION_BONUS,
true, 0.2f);
30 mem.set(FleetAIFlags.HAS_HIGHER_DETECTABILITY,
true, 0.2f);
34 if (
fleet.getOrbit() !=
null) {
38 CampaignFleetAPI pursueTarget = mem.getFleet(FleetAIFlags.PURSUIT_TARGET);
39 CampaignFleetAPI fleeingFrom = mem.getFleet(FleetAIFlags.NEAREST_FLEEING_FROM);
42 if (fleeingFrom !=
null) {
47 if (pursueTarget !=
null) {
48 VisibilityLevel level = pursueTarget.getVisibilityLevelTo(
fleet);
49 if (level != VisibilityLevel.NONE)
return;
52 float daysUnseen = mem.getFloat(FleetAIFlags.DAYS_TARGET_UNSEEN);
53 float prob = (daysUnseen - 1f) * 0.1f;
56 MarketAPI nearestMarket = Misc.findNearestLocalMarket(
fleet, 1000000,
new MarketFilter() {
57 public boolean acceptMarket(MarketAPI market) {
61 if (nearestMarket !=
null && nearestMarket.getFaction().isHostileTo(
fleet.getFaction())) {
65 if (Math.random() < prob) {
72 boolean trader = mem.getBoolean(MemFlags.MEMORY_KEY_TRADE_FLEET);
73 boolean smuggler = mem.getBoolean(MemFlags.MEMORY_KEY_SMUGGLER);
74 if (trader || smuggler) {
79 MarketAPI nearestMarket = Misc.findNearestLocalMarket(
fleet, 1000000,
new MarketFilter() {
80 public boolean acceptMarket(MarketAPI market) {
85 if (nearestMarket !=
null && nearestMarket.getFaction().isHostileTo(
fleet.getFaction())) {
88 if (Math.random() < prob) {