001package com.fs.starfarer.api.impl.campaign.skills;
002
003import com.fs.starfarer.api.characters.ShipSkillEffect;
004import com.fs.starfarer.api.combat.MutableShipStatsAPI;
005import com.fs.starfarer.api.combat.ShipAPI.HullSize;
006
007public class StrikeCommander {
008        
009//      public static final float MISSILE_SPEED_BONUS = 25f;
010//      public static final float MISSILE_RANGE_MULT = 0.8f;
011        
012        public static final float TARGET_LEADING_BONUS = 100f;
013        public static final float MISSILE_HITPOINTS_BONUS = 50f;
014        public static final float STRIKE_DAMAGE_BONUS = 20f;
015        
016        
017        public static class Level4 implements ShipSkillEffect {
018
019                public void apply(MutableShipStatsAPI stats, HullSize hullSize, String id, float level) {
020                        stats.getAutofireAimAccuracy().modifyFlat(id, TARGET_LEADING_BONUS * 0.01f);
021                }
022                
023                public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String id) {
024                        stats.getAutofireAimAccuracy().unmodify(id);
025                }       
026                
027                public String getEffectDescription(float level) {
028                        return "+" + (int)(TARGET_LEADING_BONUS) + "% target leading accuracy";
029                }
030                
031                public String getEffectPerLevelDescription() {
032                        return null;
033                }
034                
035                public ScopeDescription getScopeDescription() {
036                        return ScopeDescription.SHIP_FIGHTERS;
037                }
038        }
039
040//      public static class Level1 implements ShipSkillEffect {
041//
042//              public void apply(MutableShipStatsAPI stats, HullSize hullSize, String id, float level) {
043//                      stats.getMissileMaxSpeedBonus().modifyPercent(id, MISSILE_SPEED_BONUS);
044//                      stats.getMissileWeaponRangeBonus().modifyMult(id, MISSILE_RANGE_MULT);
045//                      
046//                      stats.getMissileAccelerationBonus().modifyPercent(id, MISSILE_SPEED_BONUS);
047//                      stats.getMissileMaxTurnRateBonus().modifyPercent(id, MISSILE_SPEED_BONUS * 2f);
048//                      stats.getMissileTurnAccelerationBonus().modifyPercent(id, MISSILE_SPEED_BONUS);
049//                      
050//              }
051//              
052//              public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String id) {
053//                      stats.getMissileMaxSpeedBonus().unmodify(id);
054//                      stats.getMissileWeaponRangeBonus().unmodify(id);
055//                      
056//                      stats.getMissileAccelerationBonus().unmodify(id);
057//                      stats.getMissileMaxTurnRateBonus().unmodify(id);
058//                      stats.getMissileTurnAccelerationBonus().unmodify(id);
059//              }       
060//              
061//              public String getEffectDescription(float level) {
062//                      return "+" + (int)(MISSILE_SPEED_BONUS) + "% missile speed and maneuverability";
063//              }
064//              
065//              public String getEffectPerLevelDescription() {
066//                      return null;
067//              }
068//              
069//              public ScopeDescription getScopeDescription() {
070//                      return ScopeDescription.SHIP_FIGHTERS;
071//              }
072//      }
073
074        public static class Level2 implements ShipSkillEffect {
075
076                public void apply(MutableShipStatsAPI stats, HullSize hullSize, String id, float level) {
077                        stats.getMissileHealthBonus().modifyPercent(id, MISSILE_HITPOINTS_BONUS);
078                }
079                
080                public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String id) {
081                        stats.getMissileHealthBonus().unmodify(id);
082                }
083                
084                public String getEffectDescription(float level) {
085                        return "+" + (int)(MISSILE_HITPOINTS_BONUS) + "% missile, rocket, bomb, and torpedo hitpoints";
086                }
087                
088                public String getEffectPerLevelDescription() {
089                        return null;
090                }
091                
092                public ScopeDescription getScopeDescription() {
093                        return ScopeDescription.SHIP_FIGHTERS;
094                }
095        }
096        
097        public static class Level3 implements ShipSkillEffect {
098
099                public void apply(MutableShipStatsAPI stats, HullSize hullSize, String id, float level) {
100                        stats.getDamageToDestroyers().modifyPercent(id, STRIKE_DAMAGE_BONUS);
101                        stats.getDamageToCruisers().modifyPercent(id, STRIKE_DAMAGE_BONUS);
102                        stats.getDamageToCapital().modifyPercent(id, STRIKE_DAMAGE_BONUS);
103                }
104                
105                public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String id) {
106                        stats.getDamageToDestroyers().unmodify(id);
107                        stats.getDamageToCruisers().unmodify(id);
108                        stats.getDamageToCapital().unmodify(id);
109                }       
110                
111                public String getEffectDescription(float level) {
112                        return "+" + (int)(STRIKE_DAMAGE_BONUS) + "% damage to ships of destroyer size and larger";
113                }
114                
115                public String getEffectPerLevelDescription() {
116                        return null;
117                }
118                
119                public ScopeDescription getScopeDescription() {
120                        return ScopeDescription.SHIP_FIGHTERS;
121                }
122        }
123        
124}