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