1package com.fs.starfarer.api.impl.campaign.missions;
4import java.util.ArrayList;
9import org.lwjgl.util.vector.Vector2f;
11import com.fs.starfarer.api.Global;
12import com.fs.starfarer.api.campaign.InteractionDialogAPI;
13import com.fs.starfarer.api.campaign.PersonImportance;
14import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
15import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
16import com.fs.starfarer.api.campaign.econ.MarketAPI;
17import com.fs.starfarer.api.campaign.econ.MonthlyReport;
18import com.fs.starfarer.api.campaign.econ.MonthlyReport.FDNode;
19import com.fs.starfarer.api.campaign.listeners.EconomyTickListener;
20import com.fs.starfarer.api.campaign.rules.MemoryAPI;
21import com.fs.starfarer.api.characters.PersonAPI;
22import com.fs.starfarer.api.impl.campaign.ids.Commodities;
23import com.fs.starfarer.api.impl.campaign.ids.Factions;
24import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
25import com.fs.starfarer.api.impl.campaign.ids.Ranks;
26import com.fs.starfarer.api.impl.campaign.ids.Tags;
27import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
28import com.fs.starfarer.api.impl.campaign.shared.SharedData;
29import com.fs.starfarer.api.ui.SectorMapAPI;
30import com.fs.starfarer.api.ui.TooltipMakerAPI;
31import com.fs.starfarer.api.ui.TooltipMakerAPI.TooltipCreator;
32import com.fs.starfarer.api.util.Misc;
33import com.fs.starfarer.api.util.WeightedRandomPicker;
50 public static enum Stage {
57 public static enum Variation {
62 public static class CheckPlayerProduction
implements ConditionChecker {
63 protected String commodityId;
64 protected int quantity;
65 public CheckPlayerProduction(String commodityId,
int quantity) {
66 this.commodityId = commodityId;
67 this.quantity = quantity;
69 public boolean conditionsMet() {
111 if (person ==
null)
return false;
124 switch (importance) {
150 if (market ==
null)
return false;
156 List<String> all =
new ArrayList<String>();
172 for (String cid : all) {
173 commoditiesPlayerIsNotProducing.
add(cid);
177 commoditiesPlayerIsProducing.
add(cid, Math.max(1, 10 - com.
getMaxSupply()));
178 commoditiesPlayerIsNotProducing.
remove(cid);
198 Variation.NOT_PRODUCING : Variation.PRODUCING_ALREADY;
203 if (
variation == Variation.NOT_PRODUCING) {
228 super.setCurrentStage(next, dialog, memoryMap);
230 if (next == Stage.PAYING) {
246 set(
"$cpm_needed",
needed);
255 info.
addPara(
"Produce at least %s units of " +
getSpec().getLowerCaseName() +
" at " +
256 "a colony under your control.", opad, h,
"" +
needed);
257 info.
addPara(
"Once these terms are met, you will receive %s per month for the next " +
258 "%s cycles, for a total of %s, as long as production is maintained.", opad, h,
263 info.
addPara(
"You will need to survey a suitable planet and establish a colony to complete " +
264 "this mission.", opad);
267 info.
addPara(
"You've met the initial terms of the contract to produce %s units of " +
268 getSpec().getLowerCaseName() +
" at " +
269 "a colony under your control.", opad, h,
"" +
needed);
270 info.
addPara(
"As long these terms are met, you will receive %s per month over %s cycles for " +
271 "a total payout of %s, assuming there is no interruption in production.", opad, h,
277 info.
addPara(
"You are currently meeting the terms of the contract.",
280 info.
addPara(
"You are not currently meeting the terms of the contract.",
284 info.
addPara(
"The contract is completed.", opad);
292 info.
addPara(
"Produce at least %s units of " +
getSpec().getLowerCaseName() +
" at " +
293 "a colony", pad, tc, h,
"" +
needed);
299 info.
addPara(
"Terms of contract met", tc, 0f);
301 info.
addPara(
"Terms of contract not met",
337 super.notifyEnding();
343 super.acceptImpl(dialog, memoryMap);
384 paymentNode.tooltipCreator =
this;
415 Set<String> tags = super.getIntelTags(map);
static SettingsAPI getSettings()
static SectorAPI getSector()
FDNode getNode(String ... path)
static final String ORGANS
static final String DRUGS
static final String PIRATES
static final String PATROL_LARGE
static String POST_PORTMASTER
static String POST_TRADER
static String POST_INVESTOR
static String POST_COMMODITIES_AGENT
static String POST_SENIOR_EXECUTIVE
static String POST_MERCHANT
static String POST_EXECUTIVE
void updateInteractionDataImpl()
static float PROB_COMPLICATIONS
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, Object tooltipParam)
static float MISSION_DAYS
boolean create(MarketAPI createdAt, boolean barEvent)
Set< String > getIntelTags(SectorMapAPI map)
static float REWARD_MULT_WHEN_PRODUCING_ALREADY
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
void reportEconomyTick(int iterIndex)
void reportEconomyMonthEnd()
float getTooltipWidth(Object tooltipParam)
static int CONTRACT_CYCLES
static float PROB_UNDERWORLD_BAR
static int MISSION_CYCLES
boolean isTooltipExpandable(Object tooltipParam)
transient CommoditySpecAPI spec
static float REWARD_MULT_WHEN_NOT_PRODUCING_ALREADY
String getCompletionFlag()
static boolean playerHasAColony()
static boolean isPlayerProducing(String commodityId, int quantity)
String getMissionTypeNoun()
void acceptImpl(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void setCurrentStage(Object next, InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
static int CONTRACT_MONTHS
CommoditySpecAPI getSpec()
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, SectorEntityToken roughlyWhere)
void triggerSetStandardAggroInterceptFlags()
void setDelay(float minDays, float maxDays)
void triggerSetAdjustStrengthBasedOnQuality(boolean randomize, float quality)
void setLocationInnerSector(boolean allowInsidePopulatedSystems, String requireLargestMarketNotHostileToFaction)
void connectWithGlobalFlag(Object from, Object to, String flag)
void setTimeLimit(Object failStage, float days, StarSystemAPI noLimitWhileInSystem, Object ... noLimitAfterStages)
boolean rollProbability(float p)
boolean setPersonMissionRef(PersonAPI person, String key)
PersonImportance pickImportance()
void setGiverPost(String giverPost)
void connectWithCustomCondition(Object from, Object to, ConditionChecker custom)
static int getRoundNumber(float num)
void setSuccessStage(Object id)
void setGiverRank(String giverRank)
void setGiverImportance(PersonImportance giverImportance)
void setFailureStage(Object id)
void setGiverTags(String ... giverTags)
void findOrCreateGiver(MarketAPI market, boolean addToCommDirectory, boolean cleanUpOnMissionOverIfWasNewPerson)
PersonImportance pickHighImportance()
void setGiverFaction(String factionId)
String pickOne(List< String > options)
void setStartingStage(Object startingStage)
void setGiverIsPotentialContactOnSuccess()
void addPotentialContacts(InteractionDialogAPI dialog)
void triggerSetFleetGenericHailPermanent(String commsTrigger)
void triggerSetStandardAggroPirateFlags()
void triggerSetFleetMemoryValue(final String key, final Object value)
static SharedData getData()
MonthlyReport getCurrentReport()
static String getDGSCredits(float num)
static String getWithDGS(float num)
static Color getNegativeHighlightColor()
static Color getHighlightColor()
static List< MarketAPI > getPlayerMarkets(boolean includeNonPlayerFaction)
static Color getPositiveHighlightColor()
CommoditySpecAPI getCommoditySpec(String commodityId)
float getFloat(String key)
List< CommoditySpecAPI > getAllCommoditySpecs()
MemoryAPI getMemoryWithoutUpdate()
ListenerManagerAPI getListenerManager()
String getLowerCaseName()
CommodityOnMarketAPI getCommodityData(String commodityId)
boolean isIllegal(String commodityId)
void addListener(Object listener)
void removeListener(Object listener)
void set(String key, Object value)
boolean hasTag(String tag)
PersonImportance getImportance()