001package com.fs.starfarer.api.impl.campaign.missions;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import com.fs.starfarer.api.campaign.econ.MarketAPI;
007import com.fs.starfarer.api.impl.campaign.ids.Industries;
008import com.fs.starfarer.api.impl.campaign.ids.Ranks;
009import com.fs.starfarer.api.impl.campaign.ids.Tags;
010import com.fs.starfarer.api.util.Misc;
011
012public class DisruptHeavyIndustry extends BaseDisruptIndustry {
013
014        protected void createBarGiver(MarketAPI createdAt) {
015                List<String> posts = new ArrayList<String>();
016                posts.add(Ranks.POST_AGENT);
017                if (createdAt.getSize() >= 6) {
018                        posts.add(Ranks.POST_ADMINISTRATOR);
019                }
020                if (Misc.isMilitary(createdAt)) {
021                        posts.add(Ranks.POST_BASE_COMMANDER);
022                }
023                if (Misc.hasOrbitalStation(createdAt)) {
024                        posts.add(Ranks.POST_STATION_COMMANDER);
025                }
026                String post = pickOne(posts);
027                if (post == null) return;
028                
029                // rank used only when it's an agent, since the other posts mean the person already exists
030                // and doesn't need to be created
031                setGiverRank(pickOne(Ranks.GROUND_CAPTAIN, Ranks.GROUND_COLONEL, Ranks.GROUND_MAJOR,
032                                         Ranks.SPACE_COMMANDER, Ranks.SPACE_CAPTAIN, Ranks.SPACE_ADMIRAL));
033                setGiverTags(Tags.CONTACT_MILITARY);
034                setGiverPost(post);
035                setGiverImportance(pickHighImportance());
036                findOrCreateGiver(createdAt, false, false);
037        }
038        
039        @Override
040        protected boolean availableAtMarket(MarketAPI createdAt) {
041                return Misc.isMilitary(createdAt);
042        }
043        
044        protected String [] getTargetIndustries() {
045                return new String[] {Industries.HEAVYINDUSTRY, Industries.ORBITALWORKS};
046        }
047        
048        protected CreditReward getRewardTier() {
049                return CreditReward.HIGH;
050        }
051
052        @Override
053        protected void addExtraTriggers(MarketAPI createdAt) {
054                if (market.getSize() <= 4) {
055                        triggerCreateMediumPatrolAroundMarket(market, Stage.DISRUPT, 0f);
056                } else if (market.getSize() <= 6) {
057                        triggerCreateLargePatrolAroundMarket(market, Stage.DISRUPT, 0f);
058                } else {
059                        triggerCreateMediumPatrolAroundMarket(market, Stage.DISRUPT, 0f);
060                        triggerCreateLargePatrolAroundMarket(market, Stage.DISRUPT, 0f);
061                }
062        }
063        
064        
065        
066}
067
068
069
070
071