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}