Starsector API
Loading...
Searching...
No Matches
TransponderAbilityAI.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.abilities.ai;
2
3import com.fs.starfarer.api.campaign.econ.MarketAPI;
4import com.fs.starfarer.api.campaign.rules.MemoryAPI;
5import com.fs.starfarer.api.impl.campaign.events.BaseEventPlugin.MarketFilter;
6import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
7import com.fs.starfarer.api.util.IntervalUtil;
8import com.fs.starfarer.api.util.Misc;
9
10public class TransponderAbilityAI extends BaseAbilityAI {
11
12 private IntervalUtil interval = new IntervalUtil(0.05f, 0.15f);
13
14// public TransponderAbilityAI(AbilityPlugin ability, ModularFleetAIAPI ai) {
15// super(ability, ai);
16// }
17
18 public void advance(float days) {
19 interval.advance(days * EmergencyBurnAbilityAI.AI_FREQUENCY_MULT);
20 if (!interval.intervalElapsed()) return;
21
22 MemoryAPI mem = fleet.getMemoryWithoutUpdate();
23
24// if (fleet.isInCurrentLocation()) {
25// float dist = Misc.getDistance(fleet.getLocation(), Global.getSector().getPlayerFleet().getLocation());
26// if (dist < fleet.getRadius() + Global.getSector().getPlayerFleet().getRadius() + 10f) {
27// System.out.println("sdfsdfdsXX1e12");
28// }
29// }
30
31// if (ability.isActive()) {
32// return;
33// }
34
35 boolean smuggler = mem.getBoolean(MemFlags.MEMORY_KEY_SMUGGLER);
36 boolean pirate = mem.getBoolean(MemFlags.MEMORY_KEY_PIRATE);
37 boolean patrol = mem.getBoolean(MemFlags.MEMORY_KEY_PATROL_FLEET);
38 //patrol |= mem.getBoolean(MemFlags.MEMORY_KEY_WAR_FLEET);
39
40 boolean trader = mem.getBoolean(MemFlags.MEMORY_KEY_TRADE_FLEET);
41
42 if (smuggler || pirate || mem.getBoolean(MemFlags.MEMORY_KEY_FORCE_TRANSPONDER_OFF)) {
43 if (ability.isActive()) {
44 ability.deactivate();
45 }
46 return;
47 }
48
49 if (patrol || trader) {
50 if (!ability.isActive()) {
51 ability.activate();
52 }
53 return;
54 }
55
56// if (fleet.getName().contains("Scavenger") &&
57// Misc.getDistance(fleet.getLocation(), Global.getSector().getPlayerFleet().getLocation()) < 1000f) {
58// System.out.println("wefwefewf");
59// }
60
61 if (fleet.isInHyperspace()) {
62 float nonHostileSize = 0;
63 float hostileSize = 0;
64 for (MarketAPI market : Misc.getNearbyMarkets(fleet.getLocation(), 1f)) {
65 float size = market.getSize();
66 if (market.getFaction().isHostileTo(fleet.getFaction())) {
67 hostileSize += size;
68 } else {
69 nonHostileSize += size;
70 }
71 }
72
73 if (nonHostileSize > hostileSize) {
74 if (!ability.isActive()) {
75 //if (!fleet.isTransponderOn()) {
76 ability.activate();
77 }
78 } else {
79 if (ability.isActive()) {
80 //if (fleet.isTransponderOn()) {
81 ability.deactivate();
82 }
83 }
84 return;
85 }
86
87 MarketAPI nearestMarket = Misc.findNearestLocalMarket(fleet, 1000000, new MarketFilter() {
88 public boolean acceptMarket(MarketAPI market) {
89 return true;
90 }
91 });
92
93 if (nearestMarket != null) {
94 if (nearestMarket.getFaction().isHostileTo(fleet.getFaction())) {
95 if (ability.isActive()) {
96 ability.deactivate();
97 }
98 } else {
99 if (!ability.isActive()) {
100 ability.activate();
101 }
102 }
103 return;
104 } else {
105// if (!ability.isActive()) {
106// ability.activate();
107// }
108 if (ability.isActive()) {
109 ability.deactivate();
110 }
111 return;
112 }
113 }
114}
115
116
117
118
119
120