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 CompromisedStorage extends BaseHullMod { 010 011public static final float CAPACITY_PENALTY_PERCENT = 25f; 012 013 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 014 float effect = stats.getDynamic().getValue(Stats.DMOD_EFFECT_MULT); 015 016 stats.getMaxCrewMod().modifyMult(id, 1f - (CAPACITY_PENALTY_PERCENT * effect) / 100f); 017 stats.getFuelMod().modifyMult(id, 1f - (CAPACITY_PENALTY_PERCENT * effect) / 100f); 018 stats.getCargoMod().modifyMult(id, 1f - (CAPACITY_PENALTY_PERCENT * effect) / 100f); 019 020 CompromisedStructure.modifyCost(hullSize, stats, id); 021 } 022 023 public String getDescriptionParam(int index, HullSize hullSize, ShipAPI ship) { 024 float effect = 1f; 025 if (ship != null) effect = ship.getMutableStats().getDynamic().getValue(Stats.DMOD_EFFECT_MULT); 026 027 if (index == 0) return "" + (int) Math.round(CAPACITY_PENALTY_PERCENT * effect) + "%"; 028 if (index >= 1) return CompromisedStructure.getCostDescParam(index, 1); 029 return null; 030 } 031 032 public boolean isApplicableToShip(ShipAPI ship) { 033 return true; 034 } 035 036 public String getUnapplicableReason(ShipAPI ship) { 037 return null; 038 } 039} 040 041 042 043