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