Starsector API
Loading...
Searching...
No Matches
PlanetaryOperations.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.skills;
2
3import java.awt.Color;
4
5import com.fs.starfarer.api.campaign.econ.MarketAPI;
6import com.fs.starfarer.api.characters.FleetStatsSkillEffect;
7import com.fs.starfarer.api.characters.MarketSkillEffect;
8import com.fs.starfarer.api.characters.MutableCharacterStatsAPI;
9import com.fs.starfarer.api.characters.SkillSpecAPI;
10import com.fs.starfarer.api.fleet.MutableFleetStatsAPI;
11import com.fs.starfarer.api.impl.campaign.ids.Stats;
12import com.fs.starfarer.api.ui.TooltipMakerAPI;
13import com.fs.starfarer.api.util.Misc;
14
15public class PlanetaryOperations {
16
17 public static int ATTACK_BONUS = 100;
18 public static int DEFEND_BONUS = 100;
19 public static float CASUALTIES_MULT = 0.75f;
20 public static float STABILITY_BONUS = 2;
21
22 public static class Level1 implements MarketSkillEffect {
23 public void apply(MarketAPI market, String id, float level) {
24 market.getStats().getDynamic().getMod(Stats.GROUND_DEFENSES_MOD).modifyMult(id, 1f + DEFEND_BONUS * 0.01f, "Ground operations");
25 }
26
27 public void unapply(MarketAPI market, String id) {
28 //market.getStats().getDynamic().getMod(Stats.GROUND_DEFENSES_MOD).unmodifyPercent(id);
29 market.getStats().getDynamic().getMod(Stats.GROUND_DEFENSES_MOD).unmodifyMult(id);
30 }
31
32 public String getEffectDescription(float level) {
33 return "+" + (int)(DEFEND_BONUS) + "% effectiveness of ground defenses";
34 }
35
36 public String getEffectPerLevelDescription() {
37 return null;
38 }
39
40 public ScopeDescription getScopeDescription() {
41 return ScopeDescription.GOVERNED_OUTPOST;
42 }
43 }
44
45 public static class Level2 implements MarketSkillEffect {
46 public void apply(MarketAPI market, String id, float level) {
47 market.getStability().modifyFlat(id, STABILITY_BONUS, "Ground operations");
48 }
49
50 public void unapply(MarketAPI market, String id) {
51 market.getStability().unmodifyFlat(id);
52 }
53
54 public String getEffectDescription(float level) {
55 return "+" + (int)STABILITY_BONUS + " stability";
56 }
57
58 public String getEffectPerLevelDescription() {
59 return null;
60 }
61
62 public ScopeDescription getScopeDescription() {
63 return ScopeDescription.GOVERNED_OUTPOST;
64 }
65 }
66
67 public static class Level3 extends BaseSkillEffectDescription implements FleetStatsSkillEffect {
68 public void apply(MutableFleetStatsAPI stats, String id, float level) {
69 //stats.getDynamic().getMod(Stats.PLANETARY_OPERATIONS_MOD).modifyMult(id, 1f + ATTACK_BONUS * 0.01f, "Planetary operations");
70 stats.getDynamic().getMod(Stats.PLANETARY_OPERATIONS_MOD).modifyPercent(id, ATTACK_BONUS, "Ground operations");
71 }
72
73 public void unapply(MutableFleetStatsAPI stats, String id) {
74 //stats.getDynamic().getMod(Stats.PLANETARY_OPERATIONS_MOD).unmodifyMult(id);
75 stats.getDynamic().getMod(Stats.PLANETARY_OPERATIONS_MOD).unmodifyPercent(id);
76 }
77
78 public void createCustomDescription(MutableCharacterStatsAPI stats, SkillSpecAPI skill,
79 TooltipMakerAPI info, float width) {
80 init(stats, skill);
81
82 float opad = 10f;
83 Color c = Misc.getBasePlayerColor();
84 info.addPara("Affects: %s", opad + 5f, Misc.getGrayColor(), c, "fleet");
85 info.addSpacer(opad);
86 info.addPara("+%s effectiveness of ground operations such as raids", 0f, hc, hc,
87 "" + (int) ATTACK_BONUS + "%");
88 }
89
90 public String getEffectDescription(float level) {
91 return "+" + (int)(ATTACK_BONUS) + "% effectiveness of ground operations such as raids";
92 }
93
94 public String getEffectPerLevelDescription() {
95 return null;
96 }
97
98 public ScopeDescription getScopeDescription() {
99 return ScopeDescription.FLEET;
100 }
101 }
102
103 public static class Level4 implements FleetStatsSkillEffect {
104 public void apply(MutableFleetStatsAPI stats, String id, float level) {
105 stats.getDynamic().getStat(Stats.PLANETARY_OPERATIONS_CASUALTIES_MULT).modifyMult(id, CASUALTIES_MULT, "Ground operations");
106 }
107
108 public void unapply(MutableFleetStatsAPI stats, String id) {
109 stats.getDynamic().getStat(Stats.PLANETARY_OPERATIONS_CASUALTIES_MULT).unmodifyMult(id);
110 }
111
112// public void createCustomDescription(MutableCharacterStatsAPI stats, SkillSpecAPI skill, TooltipMakerAPI info, float width) {
113// init(stats, skill);
114//
115// float opad = 10f;
116// Color c = Misc.getBasePlayerColor();
117// info.addPara("Affects: %s", opad + 5f, Misc.getGrayColor(), c, "fleet");
118// info.addSpacer(opad);
119// info.addPara("+%s effectiveness of ground operations", 0f, hc, hc,
120// "" + (int) ATTACK_BONUS + "%");
121// }
122
123 public String getEffectDescription(float level) {
124 return "-" + (int)Math.round((1f - CASUALTIES_MULT) * 100f) + "% marine casualties suffered during ground operations such as raids";
125 }
126
127 public String getEffectPerLevelDescription() {
128 return null;
129 }
130
131 public ScopeDescription getScopeDescription() {
132 return ScopeDescription.FLEET;
133 }
134 }
135
136}
137
138
void init(MutableCharacterStatsAPI stats, SkillSpecAPI skill)