Starsector API
Loading...
Searching...
No Matches
AngryVIPTransport.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions;
2
3import java.awt.Color;
4import java.util.ArrayList;
5import java.util.List;
6
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.econ.MarketAPI;
9import com.fs.starfarer.api.characters.PersonAPI;
10import com.fs.starfarer.api.impl.campaign.ids.Factions;
11import com.fs.starfarer.api.impl.campaign.ids.Ranks;
12import com.fs.starfarer.api.impl.campaign.ids.Voices;
13import com.fs.starfarer.api.impl.campaign.missions.academy.GACelestialObject.Variation;
14import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
15import com.fs.starfarer.api.ui.TooltipMakerAPI;
16import com.fs.starfarer.api.util.Misc;
17
19
20 public static float MISSION_DAYS = 75f;
21 public static int MIN_VALUE = 24000;
22 public static int MAX_VALUE = 36000;
23
24 public static enum Stage {
25 TRANSPORT,
26 COMPLETED,
27 FAILED,
28 }
29
31 //protected StarSystemAPI destination_system;
33 protected int quantity;
34 protected String destinationId;
35 protected Variation variation;
36 protected PersonAPI person;
37
38 @Override
39 protected boolean create(MarketAPI createdAt, boolean barEvent) {
40 // if already accepted by the player, abort
41 if (!setGlobalReference("$avipt_ref", "$avipt_inProgress")) {
42 return false;
43 }
44
45 if (createdAt == null) return false;
46
47 if (Factions.PIRATES.equals(createdAt.getFaction().getId())) return false; // I guess?
48
49 sourceMarket = createdAt;
50
51 // whitelist of aristocrat-plausible core worlds.
52 String[] planet_whitelist = new String[] {
53 "eventide",
54 "kazeron",
55 "fikenhild",
56 "culann_starforge",
57 "eochu_bres",
58 "eldfell",
59 "salamanca",
60 "yesod",
61 "olinadu",
62 "station_tse_enterprise",
63 "coatl" };
64
65 List<String> withoutSource = new ArrayList<String>();
66 for (String curr : planet_whitelist) withoutSource.add(curr);
67
68 // if the source market isn't one of these, bail out
69 if (!withoutSource.remove(sourceMarket.getId())) {
70 return false;
71 }
72
73 destinationId = pickOne(withoutSource);
74 if (destinationId == null) {
75 System.out.print("AVIPT failed on destinationId");
76 return false;
77 }
78
79 //sourceMarket.getFaction().createRandomPerson();
80 //PersonAPI person = sourceMarket.getFaction().createRandomPerson();
83 findOrCreateGiver(createdAt, false, false);
84
85
86 person = getPerson();
87 if (person == null) {
88 return false;
89 }
90
91 //person.setRankId(Ranks.CITIZEN);
93 //person.setPostId(Ranks.POST_ARISTOCRAT);
94
95 //if (person == null) return false;
96
97 //setPersonOverride(person);
98
99 if (!setPersonMissionRef(person, "$avipt_ref")) {
100 return false;
101 }
102
104 setIconName("campaignMissions", "shuttle_vip");
105
107
108 if (!setMarketMissionRef(destination_market, "$avipt_ref")) {
109 return false;
110 }
111
112 makeImportant(destination_market, "$avipt_target", Stage.TRANSPORT);
113 addSuccessStages(Stage.COMPLETED);
114
115 setStartingStage(Stage.TRANSPORT);
116 setSuccessStage(Stage.COMPLETED);
117 setFailureStage(Stage.FAILED);
118
119 setStageOnMemoryFlag(Stage.COMPLETED, destination_market, "$avipt_completed");
120 setNoAbandon();
121 setTimeLimit(Stage.FAILED, MISSION_DAYS, null);
122
123
125
126 return true;
127 }
128
129 protected void updateInteractionDataImpl() {
130
131 set("$avipt_barEvent", isBarEvent());
132 set("$avipt_reward", Misc.getWithDGS(getCreditsReward()));
133 set("$avipt_timelimit", Misc.getWithDGS(MISSION_DAYS));
134 set("$avipt_manOrWoman", getPerson().getManOrWoman());
135 set("$avipt_heOrShe", getPerson().getHeOrShe());
136 set("$avipt_hisOrHer", getPerson().getHisOrHer());
137 set("$avipt_himOrHer", getPerson().getHimOrHer());
138 set("$avipt_HeOrShe", getPerson().getHeOrShe().substring(0, 1).toUpperCase() + getPerson().getHeOrShe().substring(1));
139 set("$avipt_HisOrHer", getPerson().getHisOrHer().substring(0, 1).toUpperCase() + getPerson().getHisOrHer().substring(1));
140 set("$avipt_HimOrHer", getPerson().getHimOrHer().substring(0, 1).toUpperCase() + getPerson().getHimOrHer().substring(1));
141
142 set("$avipt_personName", getPerson().getNameString());
143 set("$avipt_systemName", destination_market.getStarSystem().getNameWithLowercaseTypeShort());
144 set("$avipt_marketName", destination_market.getName());
145 set("$avipt_sourceName", sourceMarket.getName());
146
147 //if (destination_entity.m)
148 //set("$lpt_marketOnOrAt", destination_entity.getOnOrAt());
149
150 set("$avipt_dist", getDistanceLY(destination_market));
151 }
152
153 @Override
154 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
155 float opad = 10f;
156 Color h = Misc.getHighlightColor();
157 if (currentStage == Stage.TRANSPORT) {
158 info.addPara("Transport an angry, yet wealthy, VIP to " + destination_market.getName() +
161
162 info.addPara("The VIP has made it clear that " + getPerson().getHeOrShe() + " is to arrive within " + MISSION_DAYS + " days.", opad);
163 }
164 }
165
166 @Override
167 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
168 Color h = Misc.getHighlightColor();
169 if (currentStage == Stage.TRANSPORT) {
170 info.addPara("Transport an angry, yet wealthy, VIP to " + destination_market.getName() +
173 return true;
174 }
175 return false;
176 }
177
178 @Override
179 public String getBaseName() {
180 return "Angry VIP Transport";
181 }
182
183}
184
static SectorAPI getSector()
Definition Global.java:65
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
boolean create(MarketAPI createdAt, boolean barEvent)
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)
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)