Starsector API
Loading...
Searching...
No Matches
TOffAlarm.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign;
2
3import java.util.List;
4
5import com.fs.starfarer.api.EveryFrameScript;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.SectorEntityToken.VisibilityLevel;
9import com.fs.starfarer.api.campaign.rules.MemoryAPI;
10import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
11import com.fs.starfarer.api.util.IntervalUtil;
12import com.fs.starfarer.api.util.Misc;
13
14public class TOffAlarm implements EveryFrameScript {
15 private IntervalUtil tracker = new IntervalUtil(0.05f, 0.1f);
16 private final CampaignFleetAPI fleet;
17
18 public TOffAlarm(CampaignFleetAPI fleet) {
19 this.fleet = fleet;
21 }
22
23 public void advance(float amount) {
24 float days = Global.getSector().getClock().convertToDays(amount);
25 tracker.advance(days);
26
27
28 if (tracker.intervalElapsed()) {
30 }
31 }
32
33
34 public void notifyNearby() {
35 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
36 if (playerFleet == null) return;
37
38 //VisibilityLevel playerVis = playerFleet.getVisibilityLevelTo(fleet);
39 //if (playerVis == VisibilityLevel.NONE) return;
40 if (fleet.getContainingLocation() == null) return;
41
42 // don't spread "hostile" status if this fleet was the aggressor or if attacking it has a low
43 // reputation impact for some other reason
44 if (fleet.getMemoryWithoutUpdate().getBoolean(MemFlags.MEMORY_KEY_LOW_REP_IMPACT) &&
45 !fleet.getMemoryWithoutUpdate().getBoolean(MemFlags.SPREAD_TOFF_HOSTILITY_IF_LOW_IMPACT)) {
46 return;
47 }
48
49 List<CampaignFleetAPI> fleets = fleet.getContainingLocation().getFleets();
50 for (CampaignFleetAPI other : fleets) {
51 VisibilityLevel level = other.getVisibilityLevelTo(fleet);
52 if (level == VisibilityLevel.NONE) continue;
53
54 if (level == VisibilityLevel.COMPOSITION_AND_FACTION_DETAILS && other.getFaction() == fleet.getFaction()) {
55 MemoryAPI mem = other.getMemoryWithoutUpdate();
56 Misc.setFlagWithReason(mem, MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF, "tOffAlarm", true, 3f + (float) Math.random() * 3f);
57 }
58
59// if (!other.hasScriptOfClass(TOffAlarm.class)) {
60// other.addScript(new TOffAlarm(otherFleet));
61// }
62 }
63 }
64
65 public boolean isDone() {
66 MemoryAPI mem = fleet.getMemoryWithoutUpdate();
67 if (mem.getBoolean(MemFlags.MEMORY_KEY_LOW_REP_IMPACT) &&
68 !fleet.getMemoryWithoutUpdate().getBoolean(MemFlags.SPREAD_TOFF_HOSTILITY_IF_LOW_IMPACT)) {
69 return true;
70 }
71 return !(mem.is(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_OFF, true) &&
72 mem.is(MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF, true));
73 }
74
75 public boolean runWhilePaused() {
76 return false;
77 }
78
79}
static SectorAPI getSector()
Definition Global.java:59