51 protected boolean create(MarketAPI createdAt,
boolean barEvent) {
54 if (Factions.PIRATES.equals(createdAt.getFaction().getId()))
return false;
57 setGiverRank(Ranks.CITIZEN);
58 setGiverPost(Ranks.POST_AGENT);
59 setGiverImportance(pickImportance());
60 setGiverTags(Tags.CONTACT_MILITARY);
61 findOrCreateGiver(createdAt,
true,
false);
64 PersonAPI person = getPerson();
65 if (person ==
null)
return false;
67 if (!setPersonMissionRef(person,
"$extr_ref")) {
72 setGiverIsPotentialContactOnSuccess();
86 PersonImportance importance = person.getImportance();
87 int minMarketSize = 3;
88 int maxMarketSize = 9;
112 if (importance.ordinal() >= PersonImportance.HIGH.ordinal()) {
115 Math.max(0, getPerson().getRelToPlayer().getRel());
116 if (rollProbability(pBase)) {
118 requireMarketIsNot(createdAt);
119 requireMarketFactionNotPlayer();
120 requireMarketMemoryFlag(PirateBaseIntel.MEM_FLAG,
true);
121 requireMarketNotInHyperspace();
122 preferMarketInDirectionOfOtherMissions();
123 MarketAPI pirateBase = pickMarket();
126 requireMarketIsNot(createdAt);
127 requireMarketMemoryFlag(LuddicPathBaseIntel.MEM_FLAG,
true);
128 requireMarketNotInHyperspace();
129 preferMarketInDirectionOfOtherMissions();
130 MarketAPI pathBase = pickMarket();
132 boolean allowPath = !Factions.LUDDIC_PATH.equals(createdAt.getFaction().getId());
137 danger = RaidDangerLevel.EXTREME;
138 }
else if (allowPath) {
141 danger = RaidDangerLevel.EXTREME;
148 requireMarketIsNot(createdAt);
149 requireMarketFactionNotPlayer();
150 requireMarketNotHidden();
151 requireMarketNotInHyperspace();
152 preferMarketSizeAtLeast(minMarketSize);
153 preferMarketSizeAtMost(maxMarketSize);
154 preferMarketFactionHostileTo(createdAt.getFactionId());
155 preferMarketInDirectionOfOtherMissions();
158 danger = RaidDangerLevel.MEDIUM;
161 if (
market ==
null)
return false;
162 if (!setMarketMissionRef(
market,
"$extr_ref")) {
166 int marines = getMarinesRequiredForCustomObjective(
market,
danger);
167 if (!isOkToOfferMissionRequiringMarines(marines)) {
171 makeImportant(
market,
"$extr_target", Stage.EXTRACT);
172 makeImportant(getPerson(),
"$extr_returnHere", Stage.RETURN);
174 setStartingStage(Stage.EXTRACT);
175 setSuccessStage(Stage.COMPLETED);
176 addFailureStages(Stage.FAILED);
178 connectWithMemoryFlag(Stage.EXTRACT, Stage.RETURN,
market,
"$extr_needToReturn");
179 setStageOnMemoryFlag(Stage.COMPLETED, person,
"$extr_completed");
181 addNoPenaltyFailureStages(Stage.FAILED_DECIV);
182 connectWithMarketDecivilized(Stage.EXTRACT, Stage.FAILED_DECIV,
market);
183 setStageOnMarketDecivilized(Stage.FAILED_DECIV, createdAt);
185 setTimeLimit(Stage.FAILED,
MISSION_DAYS,
null, Stage.RETURN);
200 int bonus = getRewardBonusForMarines(getMarinesRequiredForCustomObjective(
market,
danger));
201 setCreditRewardWithBonus(CreditReward.AVERAGE, bonus + extraBonus);
203 storyCost = getRoundNumber(getCreditsReward() / 2);
206 if (
market.getSize() <= 4) {
207 triggerCreateMediumPatrolAroundMarket(
market, Stage.EXTRACT, 0f);
208 }
else if (
market.getSize() <= 6) {
209 triggerCreateLargePatrolAroundMarket(
market, Stage.EXTRACT, 0f);
211 triggerCreateMediumPatrolAroundMarket(
market, Stage.EXTRACT, 0f);
212 triggerCreateLargePatrolAroundMarket(
market, Stage.EXTRACT, 0f);
244 Color h = Misc.getHighlightColor();
245 if (currentStage == Stage.EXTRACT) {
246 info.addPara(
"Extract agent located " +
248 " in the " +
market.getStarSystem().getNameWithLowercaseTypeShort() +
".", opad);
250 FactionAPI f =
market.getFaction();
251 info.addPara(
"The target location is " + f.getPersonNamePrefixAOrAn() +
" %s base.",
252 opad, f.getBaseUIColor(), f.getPersonNamePrefix());
258 FactionAPI f =
market.getFaction();
259 LabelAPI label = info.addPara(
"The target location is a size %s " +
260 "colony controlled by " + f.getDisplayNameWithArticle() +
".",
261 opad, f.getBaseUIColor(),
262 "" +
market.getSize(), f.getDisplayNameWithArticleWithoutArticle());
263 label.setHighlight(
"" +
market.getSize(), f.getDisplayNameWithArticleWithoutArticle());
264 label.setHighlightColors(h, f.getBaseUIColor());
272 }
else if (currentStage == Stage.RETURN) {
273 info.addPara(getReturnText(getPerson().getMarket().getName()) +
".", opad);