Starsector API
Loading...
Searching...
No Matches
SpySatDeployment.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.SectorEntityToken;
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 PROB_BAR_UNDERWORLD = 0.25f;
19 public static float PROB_PATROL_AROUND_TARGET = 0.5f;
20
21 public static float MISSION_DAYS = 120f;
22
23 public static enum Stage {
24 DEPLOY,
25 COMPLETED,
26 FAILED,
27 }
28
29 protected MarketAPI market;
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) {
46 } else {
50 if (Factions.PIRATES.equals(createdAt.getFaction().getId())) {
53 } else {
55 }
56 }
57 findOrCreateGiver(createdAt, false, false);
58 }
59
60 PersonAPI person = getPerson();
61 if (person == null) return false;
62
63
64 if (!setPersonMissionRef(person, "$ssat_ref")) {
65 return false;
66 }
67
68 if (barEvent) {
70 }
71
72 requireMarketIsNot(createdAt);
82
83 if (market == null) return false;
84
86 new LocData(EntityLocationType.ORBITING_PARAM, market.getPrimaryEntity(), market.getStarSystem()));
87 if (!setEntityMissionRef(target, "$ssat_ref")) return false;
88
89 makeImportant(target, "$ssat_target", Stage.DEPLOY);
91
92 setStartingStage(Stage.DEPLOY);
93 setSuccessStage(Stage.COMPLETED);
94 setFailureStage(Stage.FAILED);
95
96 setStageOnMemoryFlag(Stage.COMPLETED, target, "$ssat_completed");
97 setTimeLimit(Stage.FAILED, MISSION_DAYS, null);
98
99// int sizeModifier = market.getSize() * 10000;
100// setCreditReward(10000 + sizeModifier, 30000 + sizeModifier);
101 setCreditReward(CreditReward.AVERAGE, market.getSize());
102
105 }
106
107 return true;
108 }
109
110 protected void updateInteractionDataImpl() {
111 set("$ssat_barEvent", isBarEvent());
112 set("$ssat_underworld", getPerson().hasTag(Tags.CONTACT_UNDERWORLD));
113 set("$ssat_manOrWoman", getPerson().getManOrWoman());
114 set("$ssat_reward", Misc.getWithDGS(getCreditsReward()));
115
116 set("$ssat_personName", getPerson().getNameString());
117 set("$ssat_systemName", market.getStarSystem().getNameWithLowercaseTypeShort());
118 set("$ssat_marketName", market.getName());
119 set("$ssat_marketOnOrAt", market.getOnOrAt());
120 set("$ssat_dist", getDistanceLY(market));
121 }
122
123 @Override
124 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
125 float opad = 10f;
126 Color h = Misc.getHighlightColor();
127 if (currentStage == Stage.DEPLOY) {
128 info.addPara("Deploy a spysat in orbit of " + market.getName() +
129 " in the " + market.getStarSystem().getNameWithLowercaseTypeShort() + ".", opad);
130 }
131 }
132
133 @Override
134 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
135 Color h = Misc.getHighlightColor();
136 if (currentStage == Stage.DEPLOY) {
137 info.addPara("Deploy spysat near " +
138 market.getName() + " in the " +
140 return true;
141 }
142 return false;
143 }
144
145 @Override
146 public String getBaseName() {
147 return "SpySat Deployment";
148 }
149
150}
151
static final String CUSTOM_ALLOWS_TRANSPONDER_OFF_TRADE
Definition Factions.java:54
boolean create(MarketAPI createdAt, boolean barEvent)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
void setTimeLimit(Object failStage, float days, StarSystemAPI noLimitWhileInSystem, Object ... noLimitAfterStages)
void makeImportant(PersonAPI person, String flag, Enum ... stages)
void setStageOnMemoryFlag(Object to, HasMemory withMemory, String flag)
void findOrCreateGiver(MarketAPI market, boolean addToCommDirectory, boolean cleanUpOnMissionOverIfWasNewPerson)
boolean setEntityMissionRef(SectorEntityToken entity, String key)
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)