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