Starsector API
Loading...
Searching...
No Matches
BaseDisruptIndustry.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions;
2
3import java.awt.Color;
4import java.util.Map;
5
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;
21
23
24 public static float MISSION_DAYS = 240f;
25
26 public static enum Stage {
27 DISRUPT,
28 COMPLETED,
29 FAILED,
30 FAILED_NO_PENALTY,
31 }
32
33 protected MarketAPI market;
34 protected Industry industry;
35 protected int disruptDays;
36
37 protected void createBarGiver(MarketAPI createdAt) {
38 }
39
40 protected String [] getTargetIndustries() {
41 return new String[] {Industries.HEAVYINDUSTRY, Industries.ORBITALWORKS};
42 }
43
44 protected CreditReward getRewardTier() {
45 return CreditReward.HIGH;
46 }
47
48 protected boolean requireFactionHostile() {
49 return true;
50 }
51
52 protected void setMarketSearchParameters(MarketAPI createdAt, String [] industries) {
53 requireMarketIsNot(createdAt);
58 }
62
63 float q = getQuality();
64 if (q <= 0) {
66 } else if (q <= 0.25) {
68 } else if (q <= 0.5) {
70 } else if (q <= 0.75) {
72 }
73 }
74
75 protected void addExtraTriggers(MarketAPI createdAt) {
76
77 }
78
79 protected boolean availableAtMarket(MarketAPI createdAt) {
80 return true;
81 }
82
83 @Override
84 protected boolean create(MarketAPI createdAt, boolean barEvent) {
85 //genRandom = Misc.random;
86
87 //if (Factions.PIRATES.equals(createdAt.getFaction().getId())) return false;
88
89 if (!availableAtMarket(createdAt)) {
90 return false;
91 }
92
93 if (barEvent) {
94 createBarGiver(createdAt);
95 }
96
97 PersonAPI person = getPerson();
98 if (person == null) return false;
99
100 String id = getMissionId();
101 if (!setPersonMissionRef(person, "$" + id + "_ref")) {
102 return false;
103 }
104
105 if (barEvent) {
107 }
108
109 String [] industries = getTargetIndustries();
110
111 setMarketSearchParameters(createdAt, industries);
112
113 market = pickMarket();
114 if (market == null) return false;
115
116 for (String indId : industries) {
117 industry = market.getIndustry(indId);
118 if (industry != null) {
119 break;
120 }
121 }
122 if (industry == null) return false;
123
125
126 if (!setMarketMissionRef(market, "$" + id + "_ref")) {
127 return false;
128 }
129
132 return false;
133 }
134
135 makeImportant(market, "$" + id + "_target", Stage.DISRUPT);
136
137 setStartingStage(Stage.DISRUPT);
138 setSuccessStage(Stage.COMPLETED);
139 setFailureStage(Stage.FAILED);
140
141 setStageOnMemoryFlag(Stage.COMPLETED, market, "$" + id + "_completed");
142 setTimeLimit(Stage.FAILED, MISSION_DAYS, null);
143
144 addNoPenaltyFailureStages(Stage.FAILED_NO_PENALTY);
145 connectWithMarketDecivilized(Stage.DISRUPT, Stage.FAILED_NO_PENALTY, market);
146 setStageOnMarketDecivilized(Stage.FAILED_NO_PENALTY, createdAt);
147 if (requireFactionHostile()) {
148 connectWithHostilitiesEnded(Stage.DISRUPT, Stage.FAILED_NO_PENALTY, person, market);
149 setStageOnHostilitiesEnded(Stage.FAILED_NO_PENALTY, person, market);
150 }
151
152 //setCreditReward(80000, 100000);
153 //setCreditReward(getRewardTier(), market.getSize());
154
157
158 addExtraTriggers(createdAt);
159
160 return true;
161 }
162
163 protected void updateInteractionDataImpl() {
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());
171 set("$" + id + "_disruptDays", disruptDays);
173
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));
179 }
180
181 @Override
182 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
183 float opad = 10f;
184 Color h = Misc.getHighlightColor();
185 if (currentStage == Stage.DISRUPT) {
186// info.addPara("Disrupt " + industry.getCurrentName().toLowerCase() + " " + market.getOnOrAt() + " "+ market.getName() +
187// " in the " + market.getStarSystem().getNameWithLowercaseTypeShort() + ".", opad);
188
189 addStandardMarketDesc("Disrupt " + industry.getCurrentName() + " " + market.getOnOrAt(), market, info, opad);
190 //addStandardMarketDesc(market, info, opad);
191
193 }
194 }
195
196 @Override
197 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
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);
202 return true;
203 }
204 return false;
205 }
206
207 @Override
208 public String getBaseName() {
209 return "Disrupt " + industry.getCurrentName();
210 }
211
212
213 @Override
214 public void acceptImpl(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
215 super.acceptImpl(dialog, memoryMap);
217 }
218
219 @Override
220 protected void notifyEnding() {
221 super.notifyEnding();
223 }
224
226 MarketAPI market, TempData actionData, Industry industry) {
227 if (this.industry == industry && industry.getDisruptedDays() >= disruptDays) {
229 String id = getMissionId();
230 market.getMemoryWithoutUpdate().set("$" + id + "_raidedTargetIndustry", true, 0);
231 }
232 }
233
234
235
237 MarketAPI market, TempData actionData,
238 CargoAPI cargo) {
239 // TODO Auto-generated method stub
240 }
241
242
244 InteractionDialogAPI dialog, MarketAPI market, TempData actionData) {
245 // TODO Auto-generated method stub
246
247 }
248
250 MarketAPI market, TempData actionData) {
251 // TODO Auto-generated method stub
252
253 }
254
255}
256
257
258
static SectorAPI getSector()
Definition Global.java:65
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)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void acceptImpl(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
void reportSaturationBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
void setMarketSearchParameters(MarketAPI createdAt, String[] industries)
void setTimeLimit(Object failStage, float days, StarSystemAPI noLimitWhileInSystem, Object ... noLimitAfterStages)
void setStageOnHostilitiesEnded(Object to, PersonAPI person, MarketAPI market)
void makeImportant(PersonAPI person, String flag, Enum ... stages)
void setStageOnMemoryFlag(Object to, HasMemory withMemory, String flag)
void connectWithHostilitiesEnded(Object from, Object to, PersonAPI person, MarketAPI market)
int getMarinesRequiredToDisrupt(MarketAPI market, Industry industry, int daysRequired)
static void addStandardMarketDesc(String prefix, MarketAPI market, TooltipMakerAPI info, float pad)
void addDisruptRaidInfo(MarketAPI market, Industry industry, int daysRequired, TooltipMakerAPI info, float pad)
void connectWithMarketDecivilized(Object from, Object to, MarketAPI market)
static int getDisruptDaysPerToken(MarketAPI market, Industry industry)
static String getWithDGS(float num)
Definition Misc.java:1381
static Color getHighlightColor()
Definition Misc.java:792
ListenerManagerAPI getListenerManager()
void set(String key, Object value)
LabelAPI addPara(String format, float pad, Color hl, String... highlights)