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 IncreasedMaintenance extends BaseHullMod { 010 011 public static float CREW_PERCENT = 30; 012 public static float SUPPLY_USE_MULT = 1.30f; 013 public static float MAX_CR_PENALTY = 0.05f; 014 015 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 016 float effect = stats.getDynamic().getValue(Stats.DMOD_EFFECT_MULT); 017 //stats.getSuppliesPerMonth().modifyMult(id, 1f + (SUPPLY_USE_MULT - 1f) * effect); 018 stats.getSuppliesPerMonth().modifyPercent(id, Math.round((SUPPLY_USE_MULT - 1f) * effect * 100f)); 019 stats.getMinCrewMod().modifyPercent(id, CREW_PERCENT * effect); 020 stats.getMaxCombatReadiness().modifyFlat(id, -Math.round(MAX_CR_PENALTY * effect * 100f) * 0.01f, "Increased Maintenance"); 021 CompromisedStructure.modifyCost(hullSize, stats, id); 022 } 023 024 public String getDescriptionParam(int index, HullSize hullSize, ShipAPI ship) { 025 float effect = 1f; 026 if (ship != null) effect = ship.getMutableStats().getDynamic().getValue(Stats.DMOD_EFFECT_MULT); 027 if (index == 0) return "" + (int)Math.round((1f + (SUPPLY_USE_MULT - 1f) * effect - 1f) * 100f) + "%"; 028 if (index == 1) return "" + (int)Math.round(CREW_PERCENT * effect) + "%"; 029 if (index == 2) return "" + Math.round(MAX_CR_PENALTY * 100f * effect) + "%"; 030 if (index >= 3) return CompromisedStructure.getCostDescParam(index, 3); 031 return null; 032 } 033 034 035}