001package com.fs.starfarer.api.impl.combat.threat; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType; 005import com.fs.starfarer.api.campaign.CargoStackAPI; 006import com.fs.starfarer.api.campaign.SpecialItemData; 007import com.fs.starfarer.api.combat.BaseHullMod; 008import com.fs.starfarer.api.combat.MutableShipStatsAPI; 009import com.fs.starfarer.api.combat.ShipAPI; 010import com.fs.starfarer.api.combat.ShipAPI.HullSize; 011import com.fs.starfarer.api.impl.campaign.ids.HullMods; 012import com.fs.starfarer.api.impl.campaign.ids.Items; 013import com.fs.starfarer.api.impl.campaign.ids.Stats; 014 015public class SecondaryFabricatorHullmod extends BaseHullMod { 016 017 public static float RATE_INCREASE = 30f; 018 public static float SMOD_RATE_INCREASE = 20f; 019 020 @Override 021 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 022 stats.getDynamic().getStat(Stats.FRAGMENT_SWARM_RESPAWN_RATE_MULT).modifyPercent(id, RATE_INCREASE); 023 024 boolean sMod = isSMod(stats); 025 if (sMod) { 026 stats.getDynamic().getStat(Stats.FRAGMENT_SWARM_RESPAWN_RATE_MULT).modifyPercent(id, RATE_INCREASE + SMOD_RATE_INCREASE); 027 } 028 } 029 030 @Override 031 public CargoStackAPI getRequiredItem() { 032 return Global.getSettings().createCargoStack(CargoItemType.SPECIAL, 033 new SpecialItemData(Items.FRAGMENT_FABRICATOR, null), null); 034 } 035 036 037 public String getDescriptionParam(int index, HullSize hullSize) { 038 if (index == 0) return "" + (int)RATE_INCREASE + "%"; 039 return null; 040 } 041 042 @Override 043 public String getSModDescriptionParam(int index, HullSize hullSize, ShipAPI ship) { 044 if (index == 0) return "" + (int)SMOD_RATE_INCREASE + "%"; 045 return null; 046 } 047 048 public boolean isApplicableToShip(ShipAPI ship) { 049 return ship.getVariant().hasHullMod(HullMods.FRAGMENT_SWARM); 050 } 051 052 public String getUnapplicableReason(ShipAPI ship) { 053 return "Requires Fragment Swarm hullmod"; 054 } 055} 056 057 058 059 060 061 062 063 064 065 066