001package com.fs.starfarer.api.impl.hullmods; 002 003import java.util.HashMap; 004import java.util.Map; 005 006import com.fs.starfarer.api.combat.MutableShipStatsAPI; 007import com.fs.starfarer.api.combat.ShipAPI.HullSize; 008import com.fs.starfarer.api.impl.campaign.ids.HullMods; 009 010public class ExpandedCargoHolds extends BaseLogisticsHullMod { 011 012 public static float MIN_FRACTION = 0.3f; 013 014 private static Map mag = new HashMap(); 015 static { 016 mag.put(HullSize.FRIGATE, 30f); 017 mag.put(HullSize.DESTROYER, 60f); 018 mag.put(HullSize.CRUISER, 100f); 019 mag.put(HullSize.CAPITAL_SHIP, 200f); 020 } 021 022 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 023 float mod = (Float) mag.get(hullSize); 024 if (stats.getVariant() != null) { 025 mod = Math.max(stats.getVariant().getHullSpec().getCargo() * MIN_FRACTION, mod); 026 } 027 028 boolean sMod = isSMod(stats); 029 if (sMod) mod *= AdditionalBerthing.SMOD_MULT; 030 stats.getCargoMod().modifyFlat(id, mod); 031 032 if (!sMod && stats.getVariant() != null && stats.getVariant().hasHullMod(HullMods.CIVGRADE) && !stats.getVariant().hasHullMod(HullMods.MILITARIZED_SUBSYSTEMS)) { 033 stats.getSuppliesPerMonth().modifyPercent(id, AdditionalBerthing.MAINTENANCE_PERCENT); 034 } 035 } 036 037 public String getDescriptionParam(int index, HullSize hullSize) { 038 if (index == 0) return "" + ((Float) mag.get(HullSize.FRIGATE)).intValue(); 039 if (index == 1) return "" + ((Float) mag.get(HullSize.DESTROYER)).intValue(); 040 if (index == 2) return "" + ((Float) mag.get(HullSize.CRUISER)).intValue(); 041 if (index == 3) return "" + ((Float) mag.get(HullSize.CAPITAL_SHIP)).intValue(); 042 if (index == 4) return "" + (int) Math.round(MIN_FRACTION * 100f) + "%"; 043 if (index == 5) return "" + (int)Math.round(AdditionalBerthing.MAINTENANCE_PERCENT) + "%"; 044 return null; 045 } 046 047} 048 049 050 051