Starsector API
Loading...
Searching...
No Matches
GoDarkAbility.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.abilities;
2
3import java.awt.Color;
4
5import com.fs.starfarer.api.campaign.CampaignFleetAPI;
6import com.fs.starfarer.api.fleet.FleetMemberViewAPI;
7import com.fs.starfarer.api.impl.campaign.ids.Stats;
8import com.fs.starfarer.api.ui.LabelAPI;
9import com.fs.starfarer.api.ui.TooltipMakerAPI;
10import com.fs.starfarer.api.util.Misc;
11
12public class GoDarkAbility extends BaseToggleAbility {
13
14 //public static final float MAX_BURN_MULT = 0.5f;
15 public static final float DETECTABILITY_MULT = 0.5f;
16
17// public String getSpriteName() {
18// return Global.getSettings().getSpriteName("abilities", Abilities.GO_DARK);
19// }
20
21
22
23 @Override
24 protected String getActivationText() {
25 return "Going dark";
26 }
27
28 @Override
29 protected String getDeactivationText() {
30 //return "Restoring power";
31 return null;
32 }
33
34
35 @Override
36 protected void activateImpl() {
37// if (entity.isInCurrentLocation()) {
38// entity.addFloatingText("Going dark", entity.getFaction().getBaseUIColor(), 0.5f);
39// }
40
41// AbilityPlugin transponder = entity.getAbility(Abilities.TRANSPONDER);
42// if (transponder != null && transponder.isActive()) {
43// transponder.deactivate();
44// }
45// AbilityPlugin sb = entity.getAbility(Abilities.SUSTAINED_BURN);
46// if (sb != null && sb.isActive()) {
47// sb.deactivate();
48// }
49 }
50
51 @Override
52 protected void applyEffect(float amount, float level) {
53 CampaignFleetAPI fleet = getFleet();
54 if (fleet == null) return;
55
56 if (level < 1) level = 0;
57
58 float d = fleet.getStats().getDynamic().getValue(Stats.GO_DARK_DETECTED_AT_MULT);
59 //float b = fleet.getStats().getDynamic().getValue(Stats.GO_DARK_BURN_PENALTY_MULT);
60
61 fleet.getStats().getDetectedRangeMod().modifyMult(getModId(), 1f + (DETECTABILITY_MULT * d - 1f) * level, "Going dark");
62// float MAX_BURN_MULT = 0.5f;
63// float b = 1f;
64// fleet.getStats().getFleetwideMaxBurnMod().modifyMult(getModId(), 1f + (MAX_BURN_MULT - 1f) * level * b, "Going dark");
65
66 fleet.goSlowOneFrame();
67
68 for (FleetMemberViewAPI view : fleet.getViews()) {
69 view.getContrailColor().shift(getModId(), new Color(0,0,0,0), 1f, 1f, 1f);
70 view.getContrailDurMult().shift(getModId(), 0f, 1f, 1f, 1f);
71 //view.getContrailWidthMult().shift(getModId(), 0.25f, 1f, 1f, 1f);
72 view.getEngineGlowSizeMult().shift(getModId(), 0.5f, 1f, 1f, 1f);
73 view.getEngineHeightMult().shift(getModId(), 0.5f, 1f, 1f, 1f);
74 //view.getEngineWidthMult().shift(getModId(), 3f, 1f, 1f, 1f);
75 }
76
77
78// if (level > 0) {
79// SlipstreamTerrainPlugin slipstream = SlipstreamTerrainPlugin.getSlipstreamPlugin(fleet.getContainingLocation());
80// if (slipstream != null) {
81// slipstream.disrupt(fleet, 0.1f);
82// }
83// }
84 }
85
86 @Override
87 protected void deactivateImpl() {
89 }
90
91 @Override
92 protected void cleanupImpl() {
93 CampaignFleetAPI fleet = getFleet();
94 if (fleet == null) return;
95
96 fleet.getStats().getDetectedRangeMod().unmodify(getModId());
97 //fleet.getStats().getFleetwideMaxBurnMod().unmodifyMult(getModId());
98 }
99
100// @Override
101// public float getActivationDays() {
102// return 0.1f;
103// }
104//
105// @Override
106// public float getDeactivationDays() {
107// return 0f;
108// }
109
110 @Override
111 public boolean showProgressIndicator() {
112 return false;
113 }
114
115 @Override
116 public boolean showActiveIndicator() {
117 return isActive();
118 }
119
120
121 @Override
122 public void createTooltip(TooltipMakerAPI tooltip, boolean expanded) {
123 Color gray = Misc.getGrayColor();
124 Color highlight = Misc.getHighlightColor();
125
126 String status = " (off)";
127 if (turnedOn) {
128 status = " (on)";
129 }
130
131 LabelAPI title = tooltip.addTitle(spec.getName() + status);
132 title.highlightLast(status);
133 title.setHighlightColor(gray);
134
135 float pad = 10f;
136
137
138// tooltip.addPara("Turns off all non-essential systems, reducing the range" +
139// " at which the fleet can be detected by %s and reducing the maximum burn" +
140// " level by %s.", pad,
141// highlight,
142// "" + (int)((1f - DETECTABILITY_MULT) * 100f) + "%",
143// "" + (int)((1f - MAX_BURN_MULT) * 100f) + "%"
144// );
145 tooltip.addPara("Turns off all non-essential systems, reducing the range" +
146 " at which the fleet can be detected by %s and forcing the fleet to %s*." +
147 "", pad,
148 highlight,
149 "" + (int)((1f - DETECTABILITY_MULT) * 100f) + "%",
150 "move slowly"
151 );
152 //tooltip.addPara("Disables the transponder when activated.", pad);
153
154 tooltip.addPara("*A fleet is considered slow-moving at a burn level of half that of its slowest ship.", gray, pad);
155// tooltip.addPara("*Maximum burn level of %s", pad, gray,
156// Misc.getDarkHighlightColor(),
157// "" + Misc.getGoSlowBurnLevel(getFleet()));
158 addIncompatibleToTooltip(tooltip, expanded);
159 }
160
161 public boolean hasTooltip() {
162 return true;
163 }
164
165
166}
167
168
169
170
171
void addIncompatibleToTooltip(TooltipMakerAPI tooltip, boolean expanded)
void createTooltip(TooltipMakerAPI tooltip, boolean expanded)