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.HullMods;
008import com.fs.starfarer.api.impl.campaign.ids.Stats;
009
010public class AssaultPackage extends BaseHullMod {
011
012//      public static float FLUX_PERCENT = 25f;
013//      public static float HULL_PERCENT = 25f;
014//      public static float ARMOR_PERCENT = 25f;
015        public static float FLUX_CAPACITY_PERCENT = 10f;
016        public static float HULL_PERCENT = 10f;
017        public static float ARMOR_PERCENT = 5f;
018        
019        public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
020                
021                float mult = MilitarizedSubsystems.getEffectMult(stats);
022                stats.getHullBonus().modifyPercent(id, HULL_PERCENT * mult);
023                stats.getArmorBonus().modifyPercent(id, ARMOR_PERCENT * mult);
024                stats.getFluxCapacity().modifyPercent(id, FLUX_CAPACITY_PERCENT * mult);
025                
026                stats.getDynamic().getMod(Stats.ACT_AS_COMBAT_SHIP).modifyFlat(id, 1f);
027        }
028        
029
030
031        public String getDescriptionParam(int index, HullSize hullSize) {
032                float mult = MilitarizedSubsystems.getEffectMult(null);
033                if (index == 0) return "" + (int) Math.round(HULL_PERCENT * mult) + "%";
034                if (index == 1) return "" + (int) Math.round(ARMOR_PERCENT * mult) + "%";
035                if (index == 2) return "" + (int)Math.round(FLUX_CAPACITY_PERCENT * mult) + "%";
036                return null;
037        }
038        @Override
039        public boolean isApplicableToShip(ShipAPI ship) {
040                if (shipHasOtherModInCategory(ship, spec.getId(), HullMods.TAG_CIV_PACKAGE)) return false;
041                return ship.getVariant().hasHullMod(HullMods.MILITARIZED_SUBSYSTEMS);
042        }
043
044        @Override
045        public String getUnapplicableReason(ShipAPI ship) {
046                if (shipHasOtherModInCategory(ship, spec.getId(), HullMods.TAG_CIV_PACKAGE)) {
047                        return "Can only install one combat package on a civilian-grade hull";
048                }
049                if (!ship.getVariant().hasHullMod(HullMods.MILITARIZED_SUBSYSTEMS)) {
050                        return "Can only be installed on civilian-grade hulls with Militarized Subsystems";
051                }
052                return super.getUnapplicableReason(ship);
053        }
054        
055        
056}
057