Starsector API
Loading...
Searching...
No Matches
GARansomResearcher.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions.academy;
2
3import java.awt.Color;
4import java.util.List;
5import java.util.Map;
6
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.econ.MarketAPI;
10import com.fs.starfarer.api.campaign.rules.MemoryAPI;
11import com.fs.starfarer.api.characters.PersonAPI;
12import com.fs.starfarer.api.impl.campaign.ids.Factions;
13import com.fs.starfarer.api.impl.campaign.ids.Ranks;
14import com.fs.starfarer.api.ui.TooltipMakerAPI;
15import com.fs.starfarer.api.util.Misc;
16import com.fs.starfarer.api.util.Misc.Token;
17
18public class GARansomResearcher extends GABaseMission {
19
20 public static float RAID_DIFFICULTY = 300f;
21
22 public static float MISSION_DAYS = 120f;
23
24 public static float PROB_PIRATE_VARIATION = 0.5f;
25
26
27 public static enum Stage {
28 GO_TO_MARKET,
29 RETURN_TO_ACADEMY,
30 COMPLETED,
31 FAILED,
32 FAILED_DECIV,
33 }
34
35 public static enum Variation {
36 PIRATE,
37 CHURCH,
38 }
39
40 protected MarketAPI market;
41 protected Variation variation;
42 protected PersonAPI contact;
44
45 protected int costNormal;
46 protected int costHigh;
47 protected int costVeryLow;
48
49
50 @Override
51 protected boolean create(MarketAPI createdAt, boolean barEvent) {
52 // if this mission type was already accepted by the player, abort
53 if (!setGlobalReference("$gaRR_ref")) {
54 return false;
55 }
56 if (getGlobalMemory().contains("$gaRR_playerOwes")) {
57 return false; // the player needs to pay back the advance before this mission is offered again
58 }
59
61
63 variation = Variation.PIRATE;
64 setIconName("campaignMissions", "prisoner_pirate");
65 } else {
66 variation = Variation.CHURCH;
67 setIconName("campaignMissions", "prisoner_luddic");
68 }
69
71
72 if (variation == Variation.PIRATE) {
74 } else {
76 }
79 requireMarketLocationNot("galatia");
82
83// market = getMarket("kantas_den");
84// variation = Variation.PIRATE;
85
86 if (market == null) {
87 return false;
88 }
89
90 if (variation == Variation.PIRATE) {
92 } else {
95 }
96 if (contact == null) {
97 return false;
98 }
99
100 setStartingStage(Stage.GO_TO_MARKET);
101 addSuccessStages(Stage.COMPLETED);
102 addFailureStages(Stage.FAILED);
103 addNoPenaltyFailureStages(Stage.FAILED_DECIV);
104
105 //setPersonDoGenericPortAuthorityCheck(contact);
106 makeImportant(contact, "$gaRR_contact", Stage.GO_TO_MARKET);
107 makeImportant(getPerson(), "$gaRR_returnHere", Stage.RETURN_TO_ACADEMY);
108
109 connectWithGlobalFlag(Stage.GO_TO_MARKET, Stage.RETURN_TO_ACADEMY, "$gaRR_needToReturn");
110 setStageOnGlobalFlag(Stage.COMPLETED, "$gaRR_completed");
111 setStageOnGlobalFlag(Stage.FAILED, "$gaRR_failed");
112 connectWithMarketDecivilized(Stage.GO_TO_MARKET, Stage.FAILED_DECIV, market);
113
114 if (WITH_TIME_LIMIT) {
115 setTimeLimit(Stage.FAILED, MISSION_DAYS, market.getStarSystem(), Stage.RETURN_TO_ACADEMY);
116 }
117 //setCreditReward(30000, 40000);
118 setCreditReward(CreditReward.AVERAGE);
120
121 costNormal = genRoundNumber(60000, 70000);
122 costHigh = genRoundNumber(90000, 100000);
123 costVeryLow = genRoundNumber(8000, 10000);
124
128
129 beginStageTrigger(Stage.FAILED, Stage.FAILED_DECIV);
130 triggerSetGlobalMemoryValuePermanent("$gaRR_playerOwes", true);
132 endTrigger();
133
134 return true;
135 }
136
137 @Override
138 protected boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List<Token> params,
139 Map<String, MemoryAPI> memoryMap) {
140 if (dialog != null && action.equals("showResearcher")) {
141 showPersonInfo(researcher, dialog, false, false);
142 return true;
143 }
144 return false;
145 }
146
147 protected void updateInteractionDataImpl() {
148 set("$gaRR_department", department);
149 set("$gaRR_marketName", market.getName());
150 set("$gaRR_onOrAt", market.getOnOrAt());
151
152 set("$gaRR_contactName", contact.getNameString());
153 set("$gaRR_raidDifficulty", RAID_DIFFICULTY);
154 set("$gaRR_researcherName", researcher.getNameString());
155
156 set("$gaRR_costVeryLow", Misc.getWithDGS(costVeryLow));
157 set("$gaRR_costNormal", Misc.getWithDGS(costNormal));
158 set("$gaRR_costHigh", Misc.getWithDGS(costHigh));
159
160 set("$gaRR_systemName", market.getStarSystem().getNameWithNoType());
161 set("$gaRR_dist", getDistanceLY(market));
162 set("$gaRR_reward", Misc.getWithDGS(getCreditsReward()));
163 set("$gaRR_variation", variation);
164 }
165
166 @Override
167 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
168 float opad = 10f;
169 Color h = Misc.getHighlightColor();
170 if (currentStage == Stage.GO_TO_MARKET) {
171 String adjective = "kidnapped";
172 if (variation == Variation.CHURCH) adjective = "imprisoned";
174 ", and ransom the " + adjective + " researcher from " + contact.getNameString() + ".", opad);
175 //addCustomRaidInfo((int)RAID_DIFFICULTY, RaidDangerLevel.MINIMAL, info, opad);
176 } else if (currentStage == Stage.RETURN_TO_ACADEMY) {
177 info.addPara(getReturnText("the Galatia Academy") + ".", opad);
178 }
179 }
180
181 @Override
182 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
183 Color h = Misc.getHighlightColor();
184 if (currentStage == Stage.GO_TO_MARKET) {
185 info.addPara(getGoToMarketText(market), tc, pad);
186 return true;
187 } else if (currentStage == Stage.RETURN_TO_ACADEMY) {
188 info.addPara(getReturnTextShort("the Galatia Academy"), tc, pad);
189 return true;
190 }
191 return false;
192 }
193
194 @Override
195 public String getBaseName() {
196 return "Ransom Researcher";
197 }
198
199}
200
201
202
203
204
static SectorAPI getSector()
Definition Global.java:65
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
void connectWithGlobalFlag(Object from, Object to, String flag)
void showPersonInfo(PersonAPI person, InteractionDialogAPI dialog, boolean withFaction, boolean withRelBar)
void setTimeLimit(Object failStage, float days, StarSystemAPI noLimitWhileInSystem, Object ... noLimitAfterStages)
PersonAPI findOrCreatePerson(String factionId, MarketAPI market, boolean cleanUpOnMissionOverIfWasNewPerson, String defaultRank, String ... posts)
void makeImportant(PersonAPI person, String flag, Enum ... stages)
PersonAPI findOrCreateCriminal(MarketAPI market, boolean cleanUpOnMissionOverIfWasNewPerson)
void connectWithMarketDecivilized(Object from, Object to, MarketAPI market)
static String getWithDGS(float num)
Definition Misc.java:1381
static Color getHighlightColor()
Definition Misc.java:792
FactionAPI getFaction(String factionId)
LabelAPI addPara(String format, float pad, Color hl, String... highlights)