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.Factions;
15import com.fs.starfarer.api.impl.campaign.ids.People;
16import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithSearch;
17import com.fs.starfarer.api.impl.campaign.rulecmd.KantaCMD;
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 AFavorForKanta extends HubMissionWithSearch implements ColonyPlayerHostileActListener {
26 public static enum Stage {
36 protected boolean create(MarketAPI createdAt,
boolean barEvent) {
39 PersonAPI person = People.getPerson(People.KANTA);
40 if (person ==
null)
return false;
42 MarketAPI kantasDen = person.getMarket();
44 setPersonOverride(person);
49 if (!setGlobalReference(
"$affk_ref",
"$affk_inProgress")) {
53 String commission = Misc.getCommissionFactionId();
55 if (kantasDen !=
null) {
56 requireMarketIsNot(kantasDen);
58 requireMarketFactionNotPlayer();
59 requireMarketFactionNot(Factions.PIRATES);
60 requireMarketIsMilitary();
61 requireMarketTacticallyBombardable();
62 requireMarketNotHidden();
63 requireMarketNotInHyperspace();
65 if (commission !=
null) {
66 preferMarketFactionNot(commission);
68 preferMarketFactionNotHostileTo(Factions.PLAYER);
71 if (
market ==
null)
return false;
73 makeImportant(
market,
"$affk_target", Stage.BOMBARD);
75 setStartingStage(Stage.BOMBARD);
76 setSuccessStage(Stage.COMPLETED);
77 setFailureStage(Stage.FAILED);
79 setStageOnMemoryFlag(Stage.COMPLETED,
market,
"$affk_completed");
84 setRepPenaltyFaction(0f);
85 setRepPenaltyPerson(0f);
87 addNoPenaltyFailureStages(Stage.FAILED_NO_PENALTY);
88 connectWithMarketDecivilized(Stage.BOMBARD, Stage.FAILED_NO_PENALTY,
market);
89 setStageOnMarketDecivilized(Stage.FAILED_NO_PENALTY,
market);
92 triggerCreateLargePatrolAroundMarket(
market, Stage.BOMBARD, 0f);
93 triggerCreateLargePatrolAroundMarket(
market, Stage.BOMBARD, 0f);
94 triggerCreateMediumPatrolAroundMarket(
market, Stage.BOMBARD, 0f);
95 triggerCreateSmallPatrolAroundMarket(
market, Stage.BOMBARD, 0f);
102 super.endAbandonImpl();
107 protected void endFailureImpl(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
108 if (currentStage == Stage.FAILED) {
109 KantaCMD.loseProtection(dialog);
116 set(
"$affk_systemName",
market.getStarSystem().getNameWithLowercaseTypeShort());
117 set(
"$affk_marketName",
market.getName());
118 set(
"$affk_marketOnOrAt",
market.getOnOrAt());
124 Color h = Misc.getHighlightColor();
125 if (currentStage == Stage.BOMBARD) {
126 addStandardMarketDesc(
"Perform a tactical bombardment of",
market, info, opad);
127 addBombardmentInfo(
market, info, opad);
128 }
else if (currentStage == Stage.FAILED) {
130 info.addPara(
"Kanta's Protection lost", opad);
136 Color h = Misc.getHighlightColor();
137 if (currentStage == Stage.BOMBARD) {
138 info.addPara(
"Tactically bombard " +
market.getName() +
139 " in the " +
market.getStarSystem().getNameWithLowercaseTypeShort(), tc, pad);
160 return "A Favor for Kanta";
165 public void acceptImpl(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
166 super.acceptImpl(dialog, memoryMap);
172 super.notifyEnding();
177 MarketAPI
market, TempData actionData, Industry industry) {
184 MarketAPI
market, TempData actionData,
191 InteractionDialogAPI dialog, MarketAPI
market, TempData actionData) {
197 MarketAPI
market, TempData actionData) {
198 if (this.market ==
market) {
202 market.getMemoryWithoutUpdate().set(
"$affk_bombardedColony",
true, 1f);
static SectorAPI getSector()
void reportSaturationBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
void reportTacticalBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
void endFailureImpl(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
void reportRaidToDisruptFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, Industry industry)
static float MISSION_DAYS
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
void updateInteractionDataImpl()
boolean create(MarketAPI createdAt, boolean barEvent)
void acceptImpl(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void reportRaidForValuablesFinishedBeforeCargoShown(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, CargoAPI cargo)
String getMissionTypeNoun()