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