001package com.fs.starfarer.api.impl.hullmods;
002
003import com.fs.starfarer.api.combat.BaseHullMod;
004import com.fs.starfarer.api.combat.MutableShipStatsAPI;
005import com.fs.starfarer.api.combat.ShipAPI;
006import com.fs.starfarer.api.combat.ShipAPI.HullSize;
007import com.fs.starfarer.api.impl.campaign.ids.Stats;
008
009public class ExpandedDeckCrew extends BaseHullMod {
010
011        public static float RATE_DECREASE_MODIFIER = 15f;
012        public static float RATE_INCREASE_MODIFIER = 25f;
013        
014        public static float CREW_PER_DECK = 20f;
015        
016        
017        public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
018                stats.getDynamic().getStat(Stats.REPLACEMENT_RATE_DECREASE_MULT).modifyMult(id, 1f - RATE_DECREASE_MODIFIER / 100f);
019                stats.getDynamic().getStat(Stats.REPLACEMENT_RATE_INCREASE_MULT).modifyPercent(id, RATE_INCREASE_MODIFIER);
020                
021                int crew = (int) (stats.getNumFighterBays().getBaseValue() * CREW_PER_DECK);
022                stats.getMinCrewMod().modifyFlat(id, crew);
023        }
024                
025        public String getDescriptionParam(int index, HullSize hullSize) {
026                if (index == 0) return "" + (int) RATE_DECREASE_MODIFIER + "%";
027                if (index == 1) return "" + (int) RATE_INCREASE_MODIFIER + "%";
028                if (index == 2) return "" + (int) CREW_PER_DECK + "";
029                return null;
030        }
031        
032        public boolean isApplicableToShip(ShipAPI ship) {
033                int baysModified = (int) ship.getMutableStats().getNumFighterBays().getModifiedValue();
034                if (baysModified <= 0) return false; // only count removed bays, not added bays for this
035                
036                int bays = (int) ship.getMutableStats().getNumFighterBays().getBaseValue();
037//              if (ship != null && ship.getVariant().getHullSpec().getBuiltInWings().size() >= bays) {
038//                      return false;
039//              }
040                return ship != null && bays > 0; 
041        }
042        
043        public String getUnapplicableReason(ShipAPI ship) {
044                return "Ship does not have standard fighter bays";
045        }
046}
047
048
049
050