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;
009import com.fs.starfarer.api.impl.combat.PhaseCloakStats;
010
011public class AdaptivePhaseCoils extends BaseHullMod {
012
013        public static float FLUX_THRESHOLD_INCREASE_PERCENT = 50f;
014        
015        public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
016                stats.getDynamic().getMod(
017                                Stats.PHASE_CLOAK_FLUX_LEVEL_FOR_MIN_SPEED_MOD).modifyPercent(id, FLUX_THRESHOLD_INCREASE_PERCENT);
018        }
019        
020        public String getDescriptionParam(int index, HullSize hullSize) {
021                if (index == 0) return "" + (int) Math.round(FLUX_THRESHOLD_INCREASE_PERCENT) + "%";
022                if (index == 1) return "" + (int) Math.round(PhaseCloakStats.BASE_FLUX_LEVEL_FOR_MIN_SPEED * 100f) + "%";
023                if (index == 2) return "" + (int)Math.round(
024                                PhaseCloakStats.BASE_FLUX_LEVEL_FOR_MIN_SPEED * 100f * 
025                                (1f + FLUX_THRESHOLD_INCREASE_PERCENT/100f)) + "%";
026                return null;
027        }
028        
029        @Override
030        public boolean isApplicableToShip(ShipAPI ship) {
031                if (ship.getVariant().hasHullMod(HullMods.PHASE_ANCHOR)) return false;
032                return ship.getHullSpec().isPhase();
033        }
034
035        @Override
036        public String getUnapplicableReason(ShipAPI ship) {
037                if (ship.getVariant().hasHullMod(HullMods.PHASE_ANCHOR)) {
038                        return "Incompatible with Phase Anchor";
039                }
040                if (!ship.getHullSpec().isPhase()) {
041                        return "Can only be installed on phase ships";
042                }
043                return super.getUnapplicableReason(ship);
044        }
045        
046}
047