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 ExpandedDeckCrew extends BaseHullMod { 010 011 public static float RATE_DECREASE_MODIFIER = 15f; 012 public static float RATE_INCREASE_MODIFIER = 25f; 013 014 public static float CREW_PER_DECK = 20f; 015 016 017 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 018 stats.getDynamic().getStat(Stats.REPLACEMENT_RATE_DECREASE_MULT).modifyMult(id, 1f - RATE_DECREASE_MODIFIER / 100f); 019 stats.getDynamic().getStat(Stats.REPLACEMENT_RATE_INCREASE_MULT).modifyPercent(id, RATE_INCREASE_MODIFIER); 020 021 int crew = (int) (stats.getNumFighterBays().getBaseValue() * CREW_PER_DECK); 022 stats.getMinCrewMod().modifyFlat(id, crew); 023 } 024 025 public String getDescriptionParam(int index, HullSize hullSize) { 026 if (index == 0) return "" + (int) RATE_DECREASE_MODIFIER + "%"; 027 if (index == 1) return "" + (int) RATE_INCREASE_MODIFIER + "%"; 028 if (index == 2) return "" + (int) CREW_PER_DECK + ""; 029 return null; 030 } 031 032 public boolean isApplicableToShip(ShipAPI ship) { 033 int baysModified = (int) ship.getMutableStats().getNumFighterBays().getModifiedValue(); 034 if (baysModified <= 0) return false; // only count removed bays, not added bays for this 035 036 int bays = (int) ship.getMutableStats().getNumFighterBays().getBaseValue(); 037// if (ship != null && ship.getVariant().getHullSpec().getBuiltInWings().size() >= bays) { 038// return false; 039// } 040 return ship != null && bays > 0; 041 } 042 043 public String getUnapplicableReason(ShipAPI ship) { 044 return "Ship does not have standard fighter bays"; 045 } 046} 047 048 049 050