23 public static class Level1
implements ShipSkillEffect {
24 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
29 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
30 stats.getSystemUsesBonus().unmodifyPercent(
id);
33 public String getEffectDescription(
float level) {
35 return "If the ship's system has charges: +1 charge";
38 public String getEffectPerLevelDescription() {
42 public ScopeDescription getScopeDescription() {
43 return ScopeDescription.PILOTED_SHIP;
47 public static class Level2
implements ShipSkillEffect {
48 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
52 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
53 stats.getSystemRegenBonus().unmodifyPercent(
id);
56 public String getEffectDescription(
float level) {
57 return "If the ship's system regenerates charges: +" + (int)(
REGEN_PERCENT) +
"% regeneration rate";
60 public String getEffectPerLevelDescription() {
64 public ScopeDescription getScopeDescription() {
65 return ScopeDescription.PILOTED_SHIP;
69 public static class Level3
implements ShipSkillEffect {
70 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
74 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
75 stats.getSystemRangeBonus().unmodifyPercent(
id);
78 public String getEffectDescription(
float level) {
79 return "If the ship's system has range: +" + (int)(
RANGE_PERCENT) +
"% range";
82 public String getEffectPerLevelDescription() {
86 public ScopeDescription getScopeDescription() {
87 return ScopeDescription.PILOTED_SHIP;
91 public static class Level4
implements ShipSkillEffect {
92 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
96 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
97 stats.getSystemCooldownBonus().unmodify(
id);
100 public String getEffectDescription(
float level) {
104 public String getEffectPerLevelDescription() {
108 public ScopeDescription getScopeDescription() {
109 return ScopeDescription.PILOTED_SHIP;
114 public static class Level5
implements ShipSkillEffect {
115 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
119 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
120 stats.getPeakCRDuration().unmodifyFlat(
id);
123 public String getEffectDescription(
float level) {
127 public String getEffectPerLevelDescription() {
131 public ScopeDescription getScopeDescription() {
132 return ScopeDescription.PILOTED_SHIP;
136 public static class Level6
implements ShipSkillEffect {
138 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
142 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
143 stats.getOverloadTimeMod().unmodify(
id);
146 public String getEffectDescription(
float level) {
150 public String getEffectPerLevelDescription() {
154 public ScopeDescription getScopeDescription() {
155 return ScopeDescription.PILOTED_SHIP;
159 public static class Level7
implements ShipSkillEffect {
160 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
165 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
166 stats.getWeaponMalfunctionChance().unmodifyMult(
id);
167 stats.getEngineMalfunctionChance().unmodifyMult(
id);
170 public String getEffectDescription(
float level) {
172 return "Chance of malfunctions when at low combat readiness reduced by " + percent;
175 public String getEffectPerLevelDescription() {
179 public ScopeDescription getScopeDescription() {
180 return ScopeDescription.PILOTED_SHIP;
184 public static class Level8
implements ShipSkillEffect {
185 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
191 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
192 stats.getArmorDamageTakenMult().unmodifyMult(
id);
193 stats.getHullDamageTakenMult().unmodifyMult(
id);
194 stats.getShieldDamageTakenMult().unmodifyMult(
id);
197 public String getEffectDescription(
float level) {
199 return percent +
" damage taken";
202 public String getEffectPerLevelDescription() {
206 public ScopeDescription getScopeDescription() {
207 return ScopeDescription.PILOTED_SHIP;