Starsector API
Loading...
Searching...
No Matches
SmugglingMission.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions;
2
3import java.awt.Color;
4
5import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
6import com.fs.starfarer.api.campaign.econ.MarketAPI;
7import com.fs.starfarer.api.characters.PersonAPI;
8import com.fs.starfarer.api.impl.campaign.ids.Factions;
9import com.fs.starfarer.api.impl.campaign.ids.Ranks;
10import com.fs.starfarer.api.impl.campaign.ids.Tags;
11import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
12import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
13import com.fs.starfarer.api.ui.TooltipMakerAPI;
14import com.fs.starfarer.api.util.Misc;
15
17
18 public static float MISSION_DAYS = 60f;
19 public static float MIN_VALUE = 10000f;
20 public static float MAX_VALUE = 100000f;
21
22 public static enum Stage {
23 SMUGGLE,
24 COMPLETED,
25 FAILED,
26 }
27
28 protected MarketAPI market;
30 protected int quantity;
31
32 @Override
33 protected boolean create(MarketAPI createdAt, boolean barEvent) {
34 //genRandom = Misc.random;
35
36 //if (Factions.PIRATES.equals(createdAt.getFaction().getId())) return false;
37
38 if (barEvent) {
45 findOrCreateGiver(createdAt, false, false);
46 }
47
48 PersonAPI person = getPerson();
49 if (person == null) return false;
50
51
52 if (!setPersonMissionRef(person, "$smug_ref")) {
53 return false;
54 }
55
56 if (barEvent) {
58 }
59
60 requireMarketIsNot(createdAt);
67
70
72 if (com == null) return false;
73
75 if (market == null) return false;
76
77
78 float value = MIN_VALUE + getQuality() * (MAX_VALUE - MIN_VALUE);
79 value *= 0.9f + genRandom.nextFloat() * 0.2f;
80
82 if (quantity < 10) quantity = 10;
83
84 if (!setMarketMissionRef(market, "$smug_ref")) {
85 return false;
86 }
87 makeImportant(market, "$smug_target", Stage.SMUGGLE);
88
89 setStartingStage(Stage.SMUGGLE);
90 setSuccessStage(Stage.COMPLETED);
91 setFailureStage(Stage.FAILED);
92
93 setStageOnMemoryFlag(Stage.COMPLETED, market, "$smug_completed");
95 setTimeLimit(Stage.FAILED, MISSION_DAYS, null);
96
97
98 //setCreditReward((int)(value * 0.5f), (int)(value * 0.7f));
99 setCreditRewardWithBonus(CreditReward.LOW, (int) (value * 0.5f));
100
102
103 return true;
104 }
105
106 protected void updateInteractionDataImpl() {
107 set("$smug_barEvent", isBarEvent());
108 set("$smug_manOrWoman", getPerson().getManOrWoman());
109 set("$smug_reward", Misc.getWithDGS(getCreditsReward()));
110 set("$smug_commodityId", com.getId());
111 set("$smug_commodityName", com.getCommodity().getLowerCaseName());
112 set("$smug_quantity", Misc.getWithDGS(quantity));
113 set("$smug_playerHasEnough", playerHasEnough(com.getId(), quantity));
114
115 set("$smug_personName", getPerson().getNameString());
116 set("$smug_systemName", market.getStarSystem().getNameWithLowercaseTypeShort());
117 set("$smug_marketName", market.getName());
118 set("$smug_marketOnOrAt", market.getOnOrAt());
119 set("$smug_dist", getDistanceLY(market));
120 }
121
122 @Override
123 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
124 float opad = 10f;
125 Color h = Misc.getHighlightColor();
126 if (currentStage == Stage.SMUGGLE) {
127 info.addPara("Smuggle %s units of " + com.getCommodity().getLowerCaseName() + " to " + market.getName() +
128 " in the " + market.getStarSystem().getNameWithLowercaseTypeShort() + ".", opad,
130
131 info.addPara("The authorities are aware the shipment is incoming and patrols are on high alert.", opad);
132 }
133 }
134
135 @Override
136 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
137 Color h = Misc.getHighlightColor();
138 if (currentStage == Stage.SMUGGLE) {
139 info.addPara("Smuggle %s units of " + com.getCommodity().getLowerCaseName() + " to " +
140 market.getName() + " in the " +
143 return true;
144 }
145 return false;
146 }
147
148 @Override
149 public String getBaseName() {
150 return "Smuggling " + com.getCommodity().getName();
151 }
152
153}
154
static final String CUSTOM_ALLOWS_TRANSPONDER_OFF_TRADE
Definition Factions.java:54
boolean create(MarketAPI createdAt, boolean barEvent)
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void setTimeLimit(Object failStage, float days, StarSystemAPI noLimitWhileInSystem, Object ... noLimitAfterStages)
static boolean playerHasEnough(String comId, int quantity)
void makeImportant(PersonAPI person, String flag, Enum ... stages)
void setStageOnMemoryFlag(Object to, HasMemory withMemory, String flag)
void findOrCreateGiver(MarketAPI market, boolean addToCommDirectory, boolean cleanUpOnMissionOverIfWasNewPerson)
void triggerCreateMediumPatrolAroundMarket(MarketAPI market, Object stage, float extraSuspicion)
static String getWithDGS(float num)
Definition Misc.java:1381
static Color getHighlightColor()
Definition Misc.java:792
LabelAPI addPara(String format, float pad, Color hl, String... highlights)