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 FragmentCoordinatorHullmod extends BaseHullMod { 016 017 public static float SIZE_INCREASE = 60f; 018 public static float SMOD_SIZE_INCREASE = 40f; 019 020 @Override 021 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 022 stats.getDynamic().getMod(Stats.FRAGMENT_SWARM_SIZE_MOD).modifyPercent(id, SIZE_INCREASE); 023 024 boolean sMod = isSMod(stats); 025 if (sMod) { 026 stats.getDynamic().getMod(Stats.FRAGMENT_SWARM_SIZE_MOD).modifyPercent(id, SIZE_INCREASE + SMOD_SIZE_INCREASE); 027 } 028 } 029 030 @Override 031 public CargoStackAPI getRequiredItem() { 032 //return Global.getSettings().createCargoStack(CargoItemType.RESOURCES, Commodities.ALPHA_CORE, null); 033 return Global.getSettings().createCargoStack(CargoItemType.SPECIAL, 034 new SpecialItemData(Items.THREAT_PROCESSING_UNIT, null), null); 035 } 036 037 038 public String getDescriptionParam(int index, HullSize hullSize) { 039 if (index == 0) return "" + (int)SIZE_INCREASE + "%"; 040 return null; 041 } 042 043 @Override 044 public String getSModDescriptionParam(int index, HullSize hullSize, ShipAPI ship) { 045 if (index == 0) return "" + (int)SMOD_SIZE_INCREASE + "%"; 046 return null; 047 } 048 049 public boolean isApplicableToShip(ShipAPI ship) { 050 return ship.getVariant().hasHullMod(HullMods.FRAGMENT_SWARM); 051 } 052 053 public String getUnapplicableReason(ShipAPI ship) { 054 return "Requires Fragment Swarm hullmod"; 055 } 056} 057 058 059 060 061 062 063 064 065 066 067