Starsector API
Loading...
Searching...
No Matches
NavBuoyEntityPlugin.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign;
2
3import com.fs.starfarer.api.campaign.CampaignFleetAPI;
4import com.fs.starfarer.api.campaign.SectorEntityToken;
5import com.fs.starfarer.api.campaign.TextPanelAPI;
6import com.fs.starfarer.api.combat.MutableStat.StatMod;
7import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
8import com.fs.starfarer.api.impl.campaign.ids.Tags;
9import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
10import com.fs.starfarer.api.ui.TooltipMakerAPI;
11import com.fs.starfarer.api.util.Misc;
12
14
15 public static float NAV_BONUS = 3f;
16 public static float NAV_BONUS_MAKESHIFT = 2f;
17
18 public void init(SectorEntityToken entity, Object pluginParams) {
19 super.init(entity, pluginParams);
20 readResolve();
21 }
22
23 Object readResolve() {
24 return this;
25 }
26
27 public void advance(float amount) {
28 if (entity.getContainingLocation() == null || entity.isInHyperspace()) return;
29 if (isReset()) return;
30
31 String id = getModId();
32 for (CampaignFleetAPI fleet : entity.getContainingLocation().getFleets()) {
33 if (fleet.isInHyperspaceTransition()) continue;
34
35 if (fleet.getFaction() == entity.getFaction() || (isHacked() && fleet.getFaction().isPlayerFaction())) {
36
37 String desc = "Nav buoy";
38 float bonus = NAV_BONUS;
39 if (isMakeshift()) {
40 desc = "Makeshift nav buoy";
41 bonus = NAV_BONUS_MAKESHIFT;
42 }
43
44 StatMod curr = fleet.getStats().getFleetwideMaxBurnMod().getFlatBonus(id);
45 if (curr == null || curr.value <= bonus) {
46 fleet.getStats().addTemporaryModFlat(0.1f, id,
47 desc, bonus,
48 fleet.getStats().getFleetwideMaxBurnMod());
49 }
50 }
51 }
52
53 }
54
55 protected boolean isMakeshift() {
56 return entity.hasTag(Tags.MAKESHIFT);
57 }
58
59 public void printEffect(TooltipMakerAPI text, float pad) {
60 int bonus = (int) NAV_BONUS;
61 if (isMakeshift()) {
62 bonus = (int) NAV_BONUS_MAKESHIFT;
63 }
64 text.addPara(BaseIntelPlugin.INDENT + "%s burn level for all same-faction fleets in system",
65 pad, Misc.getHighlightColor(), "+" + bonus);
66
67 if (isReset()) {
68 text.addPara(BaseIntelPlugin.INDENT + "Auto-calibrating after factory reset; non-functional", 3f);
69 }
70 }
71
72 public void printNonFunctionalAndHackDescription(TextPanelAPI text) {
73 if (entity.getMemoryWithoutUpdate().getBoolean(MemFlags.OBJECTIVE_NON_FUNCTIONAL)) {
74 text.addPara("This one, however, does not appear to be transmitting a navigation telemetry broadcast. The cause of its lack of function is unknown.");
75 }
76 if (isHacked()) {
77 text.addPara("You have a hack running on this nav buoy.");
78 }
79// if (isReset()) {
80// text.addPara("This nav buoy is auto-calibrating after a factory reset and is effectively non-functional.");
81// }
82 }
83
84
85
86 @Override
87 public void addHackStatusToTooltip(TooltipMakerAPI text, float pad) {
88 int bonus = (int) NAV_BONUS;
89 if (isMakeshift()) {
90 bonus = (int) NAV_BONUS_MAKESHIFT;
91 }
92 text.addPara("%s burn level for in-system fleets",
93 pad, Misc.getHighlightColor(), "+" + bonus);
94
95 super.addHackStatusToTooltip(text, pad);
96 }
97
98 protected String getModId() {
99 return "nav_buoy";
100 }
101
102
103}
104
105
106
void init(SectorEntityToken entity, Object pluginParams)
void addHackStatusToTooltip(TooltipMakerAPI text, float pad)