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