1package com.fs.starfarer.api.impl.campaign.missions;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CargoAPI;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.econ.Industry;
10import com.fs.starfarer.api.campaign.econ.MarketAPI;
11import com.fs.starfarer.api.campaign.listeners.ColonyPlayerHostileActListener;
12import com.fs.starfarer.api.campaign.rules.MemoryAPI;
13import com.fs.starfarer.api.characters.PersonAPI;
14import com.fs.starfarer.api.impl.campaign.ids.Industries;
15import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
16import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
17import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD;
18import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.TempData;
19import com.fs.starfarer.api.ui.TooltipMakerAPI;
20import com.fs.starfarer.api.util.Misc;
22public class BaseDisruptIndustry extends HubMissionWithBarEvent implements ColonyPlayerHostileActListener {
26 public static enum Stage {
41 return new String[] {Industries.HEAVYINDUSTRY, Industries.ORBITALWORKS};
45 return CreditReward.HIGH;
53 requireMarketIsNot(createdAt);
54 requireMarketLocationNot(createdAt.getContainingLocation());
55 requireMarketFactionNotPlayer();
57 requireMarketFactionHostileTo(createdAt.getFactionId());
59 requireMarketNotHidden();
60 requireMarketIndustries(ReqMode.ANY, industries);
61 requireMarketNotInHyperspace();
63 float q = getQuality();
65 preferMarketSizeAtMost(4);
66 }
else if (q <= 0.25) {
67 preferMarketSizeAtMost(5);
68 }
else if (q <= 0.5) {
69 preferMarketSizeAtMost(6);
70 }
else if (q <= 0.75) {
71 preferMarketSizeAtMost(7);
84 protected boolean create(MarketAPI createdAt,
boolean barEvent) {
97 PersonAPI person = getPerson();
98 if (person ==
null)
return false;
100 String
id = getMissionId();
101 if (!setPersonMissionRef(person,
"$" +
id +
"_ref")) {
106 setGiverIsPotentialContactOnSuccess();
114 if (
market ==
null)
return false;
116 for (String indId : industries) {
126 if (!setMarketMissionRef(
market,
"$" +
id +
"_ref")) {
131 if (!isOkToOfferMissionRequiringMarines(marines)) {
135 makeImportant(
market,
"$" +
id +
"_target", Stage.DISRUPT);
137 setStartingStage(Stage.DISRUPT);
138 setSuccessStage(Stage.COMPLETED);
139 setFailureStage(Stage.FAILED);
141 setStageOnMemoryFlag(Stage.COMPLETED,
market,
"$" +
id +
"_completed");
144 addNoPenaltyFailureStages(Stage.FAILED_NO_PENALTY);
145 connectWithMarketDecivilized(Stage.DISRUPT, Stage.FAILED_NO_PENALTY,
market);
146 setStageOnMarketDecivilized(Stage.FAILED_NO_PENALTY, createdAt);
148 connectWithHostilitiesEnded(Stage.DISRUPT, Stage.FAILED_NO_PENALTY, person,
market);
149 setStageOnHostilitiesEnded(Stage.FAILED_NO_PENALTY, person,
market);
164 String
id = getMissionId();
165 set(
"$" +
id +
"_barEvent", isBarEvent());
166 set(
"$" +
id +
"_manOrWoman", getPerson().getManOrWoman());
167 set(
"$" +
id +
"_hisOrHer", getPerson().getHisOrHer());
168 set(
"$" +
id +
"_heOrShe", getPerson().getHeOrShe());
169 set(
"$" +
id +
"_reward", Misc.getWithDGS(getCreditsReward()));
170 set(
"$" +
id +
"_industry",
industry.getCurrentName());
174 set(
"$" +
id +
"_personName", getPerson().getNameString());
175 set(
"$" +
id +
"_systemName",
market.getStarSystem().getNameWithLowercaseTypeShort());
176 set(
"$" +
id +
"_marketName",
market.getName());
177 set(
"$" +
id +
"_marketOnOrAt",
market.getOnOrAt());
178 set(
"$" +
id +
"_dist", getDistanceLY(
market));
184 Color h = Misc.getHighlightColor();
185 if (currentStage == Stage.DISRUPT) {
189 addStandardMarketDesc(
"Disrupt " +
industry.getCurrentName() +
" " +
market.getOnOrAt(),
market, info, opad);
198 Color h = Misc.getHighlightColor();
199 if (currentStage == Stage.DISRUPT) {
200 info.addPara(
"Disrupt " +
industry.getCurrentName().toLowerCase() +
" " +
market.getOnOrAt() +
" "+
market.getName() +
201 " in the " +
market.getStarSystem().getNameWithLowercaseTypeShort(), tc, pad);
209 return "Disrupt " +
industry.getCurrentName();
214 public void acceptImpl(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
215 super.acceptImpl(dialog, memoryMap);
221 super.notifyEnding();
229 String
id = getMissionId();
230 market.getMemoryWithoutUpdate().set(
"$" +
id +
"_raidedTargetIndustry",
true, 0);
237 MarketAPI
market, TempData actionData,
244 InteractionDialogAPI dialog, MarketAPI
market, TempData actionData) {
250 MarketAPI
market, TempData actionData) {
static SectorAPI getSector()
boolean availableAtMarket(MarketAPI createdAt)
String[] getTargetIndustries()
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
void reportTacticalBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
void reportRaidToDisruptFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, Industry industry)
void reportRaidForValuablesFinishedBeforeCargoShown(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, CargoAPI cargo)
void createBarGiver(MarketAPI createdAt)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void acceptImpl(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
CreditReward getRewardTier()
static float MISSION_DAYS
void updateInteractionDataImpl()
void reportSaturationBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
void addExtraTriggers(MarketAPI createdAt)
void setMarketSearchParameters(MarketAPI createdAt, String[] industries)
boolean create(MarketAPI createdAt, boolean barEvent)
boolean requireFactionHostile()