26 public static class Level1
implements ShipSkillEffect {
28 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
32 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
33 stats.getRepairRatePercentPerDay().unmodify(
id);
36 public String getEffectDescription(
float level) {
40 public String getEffectPerLevelDescription() {
44 public ScopeDescription getScopeDescription() {
45 return ScopeDescription.ALL_SHIPS;
49 public static class Level1B
implements FleetStatsSkillEffect {
50 public void apply(MutableFleetStatsAPI stats, String
id,
float level) {
54 public void unapply(MutableFleetStatsAPI stats, String
id) {
55 stats.getDynamic().getMod(Stats.OFFICER_SHIP_RECOVERY_MOD).unmodify(
id);
58 public String getEffectDescription(
float level) {
59 return "Flagship and ships with an officer in command nearly guaranteed to be recoverable if lost";
62 public String getEffectPerLevelDescription() {
66 public ScopeDescription getScopeDescription() {
67 return ScopeDescription.FLEET;
71 public static class Level2
implements ShipSkillEffect {
72 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
76 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
77 stats.getSuppliesPerMonth().unmodify(
id);
80 public String getEffectDescription(
float level) {
84 public String getEffectPerLevelDescription() {
88 public ScopeDescription getScopeDescription() {
89 return ScopeDescription.ALL_SHIPS;
93 public static class Level3
implements ShipSkillEffect {
95 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
96 stats.getMaxCombatReadiness().modifyFlat(
id,
MAX_CR_BONUS * 0.01f,
"Fleet logistics skill");
99 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
100 stats.getMaxCombatReadiness().unmodify(
id);
103 public String getEffectDescription(
float level) {
104 return "+" + (int)(
MAX_CR_BONUS) +
"% maximum combat readiness";
107 public String getEffectPerLevelDescription() {
111 public ScopeDescription getScopeDescription() {
112 return ScopeDescription.ALL_SHIPS;
117 public static class Market1
implements MarketSkillEffect {
118 public void apply(MarketAPI market, String
id,
float level) {
120 market.getAccessibilityMod().modifyFlat(
id,
ACCESS_1,
"Fleet logistics");
121 }
else if (level >= 2) {
122 market.getAccessibilityMod().modifyFlat(
id,
ACCESS_1 +
ACCESS_2,
"Fleet logistics");
126 public void unapply(MarketAPI market, String
id) {
127 market.getAccessibilityMod().unmodifyFlat(
id);
130 public String getEffectDescription(
float level) {
131 return "+" + (int)Math.round(
ACCESS_1 * 100f) +
"% accessibility";
134 public String getEffectPerLevelDescription() {
138 public ScopeDescription getScopeDescription() {
139 return ScopeDescription.GOVERNED_OUTPOST;
143 public static class Market2
implements MarketSkillEffect {
144 public void apply(MarketAPI market, String
id,
float level) {
148 public void unapply(MarketAPI market, String
id) {
152 public String getEffectDescription(
float level) {
153 return "+" + (int)Math.round(
ACCESS_2 * 100f) +
"% accessibility";
156 public String getEffectPerLevelDescription() {
160 public ScopeDescription getScopeDescription() {
161 return ScopeDescription.GOVERNED_OUTPOST;
164 public static class Market3
implements MarketSkillEffect {
165 public void apply(MarketAPI market, String
id,
float level) {
166 market.getStats().getDynamic().getMod(Stats.COMBAT_FLEET_SIZE_MULT).modifyFlat(
id,
FLEET_SIZE / 100f,
"Fleet logistics");
169 public void unapply(MarketAPI market, String
id) {
170 market.getStats().getDynamic().getMod(Stats.COMBAT_FLEET_SIZE_MULT).unmodifyFlat(
id);
173 public String getEffectDescription(
float level) {
174 return "" + (int)Math.round(
FLEET_SIZE) +
"% larger fleets";
177 public String getEffectPerLevelDescription() {
181 public ScopeDescription getScopeDescription() {
182 return ScopeDescription.GOVERNED_OUTPOST;