Starsector API
Loading...
Searching...
No Matches
TheUsurpers.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions.askonia;
2
3import java.awt.Color;
4import java.util.List;
5import java.util.Map;
6
7import org.lwjgl.util.vector.Vector2f;
8
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.BattleAPI;
11import com.fs.starfarer.api.campaign.CampaignFleetAPI;
12import com.fs.starfarer.api.campaign.CargoAPI;
13import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
14import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
15import com.fs.starfarer.api.campaign.CargoStackAPI;
16import com.fs.starfarer.api.campaign.FleetAssignment;
17import com.fs.starfarer.api.campaign.InteractionDialogAPI;
18import com.fs.starfarer.api.campaign.SectorEntityToken;
19import com.fs.starfarer.api.campaign.StarSystemAPI;
20import com.fs.starfarer.api.campaign.econ.MarketAPI;
21import com.fs.starfarer.api.campaign.rules.MemoryAPI;
22import com.fs.starfarer.api.characters.AbilityPlugin;
23import com.fs.starfarer.api.characters.PersonAPI;
24import com.fs.starfarer.api.combat.ShipVariantAPI;
25import com.fs.starfarer.api.fleet.FleetMemberAPI;
26import com.fs.starfarer.api.fleet.FleetMemberType;
27import com.fs.starfarer.api.impl.campaign.ids.Abilities;
28import com.fs.starfarer.api.impl.campaign.ids.Commodities;
29import com.fs.starfarer.api.impl.campaign.ids.Factions;
30import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
31import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
32import com.fs.starfarer.api.impl.campaign.ids.People;
33import com.fs.starfarer.api.impl.campaign.ids.Ranks;
34import com.fs.starfarer.api.impl.campaign.missions.academy.GATransverseJump.Stage;
35import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithSearch;
36import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
37import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
38import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
39import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
40import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
41import com.fs.starfarer.api.impl.campaign.procgen.themes.SalvageSpecialAssigner;
42import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
43import com.fs.starfarer.api.impl.campaign.rulecmd.AddShip;
44import com.fs.starfarer.api.impl.campaign.terrain.DebrisFieldTerrainPlugin.DebrisFieldParams;
45import com.fs.starfarer.api.impl.campaign.terrain.DebrisFieldTerrainPlugin.DebrisFieldSource;
46import com.fs.starfarer.api.ui.TooltipMakerAPI;
47import com.fs.starfarer.api.util.Misc;
48import com.fs.starfarer.api.util.Misc.Token;
49
50public class TheUsurpers extends HubMissionWithSearch {
51
52 public static float EXTACT_AGENT_RAID_DIFFICULTY = 200f;
53
54 public static enum Stage {
55 MEET_RAM,
56 INTERCEPT_FLEET,
57 MEET_HYDER,
58 RETURN_TO_MACARIO,
59 EXTRACT_AGENT,
60 MEET_CADEN,
61 AGAIN_WTH_MACARIO,
62 EMERGENCY_INTERCEPT,
63 DELIVER_NEWS,
64 COMPLETED,
65 }
66
67 protected PersonAPI ram;
68 protected PersonAPI hyder;
69 protected PersonAPI caden;
70 protected PersonAPI macario;
71 protected PersonAPI patrolSecond;
72
73 protected MarketAPI umbra;
74 protected MarketAPI sindria;
75 protected MarketAPI volturn;
76
77 protected SectorEntityToken debris;
78
79 //public static float MISSION_DAYS = 120f;
80
81 protected int marineLosses;
82 protected int marineLossesMin;
83 protected int marineLossesMax;
84
85 protected int xpRewardLow;
86 protected int xpRewardMedium;
87 protected int xpRewardHigh;
88
89 @Override
90 protected boolean create(MarketAPI createdAt, boolean barEvent) {
91 // if already accepted by the player, abort
92 if (!setGlobalReference("$sdtu_ref", "$sdtu_inProgress")) {
93 return false;
94 }
95
96 setPersonOverride(null);
97
98 ram = getImportantPerson(People.RAM);
99 if (ram == null) return false;
100
101 hyder = getImportantPerson(People.HYDER);
102 if (hyder == null) return false;
103
104 caden = getImportantPerson(People.CADEN);
105 if (caden == null) return false;
106
107 macario = getImportantPerson(People.MACARIO);
108 if (macario == null) return false;
109
110
111 umbra =getMarket("umbra");
112 if (umbra == null) return false;
113 if (!umbra.getFactionId().equals("pirates")) return false;
114
115 volturn = getMarket("volturn");
116 if (volturn == null) return false;
117 if (!volturn.getFactionId().equals("sindrian_diktat")) return false;
118
119 sindria = getMarket("sindria");
120 if (sindria == null) return false;
121 if (!sindria.getFactionId().equals("sindrian_diktat")) return false;
122
123
124
125 setStoryMission();
126 setStartingStage(Stage.MEET_RAM);
127 addSuccessStages(Stage.COMPLETED);
128
129 marineLossesMax = 4;
130 marineLossesMin = 1;
131 marineLosses = marineLossesMin + genRandom.nextInt(marineLossesMax - marineLossesMin + 1);
132
133 xpRewardLow = 2000;
134 xpRewardMedium = 5000;
135 xpRewardHigh = 12000;
136
137 //payment = 10000;
138 //paymentHigh = 17000;
139
140 patrolSecond = Global.getSector().getFaction(Factions.DIKTAT).createRandomPerson(genRandom);
141 patrolSecond.setRankId(Ranks.SPACE_LIEUTENANT);
142 patrolSecond.setPostId(Ranks.POST_FLEET_COMMANDER);
143
144
145 makeImportant(volturn, "$sdtu_meetRamOnVolturn", Stage.MEET_RAM);
146 makeImportant(hyder, "$sdtu_meetHyder", Stage.MEET_HYDER);
147 makeImportant(macario, "$sdtu_didHyderMeeting", Stage.RETURN_TO_MACARIO);
148 makeImportant(umbra, "$sdtu_extractAgent", Stage.EXTRACT_AGENT);
149 makeImportant(caden, "$sdtu_meetCaden", Stage.MEET_CADEN);
150 makeImportant(macario, "$sdtu_didCadenMeeting", Stage.AGAIN_WTH_MACARIO);
151 // debris field is made important in Action
152 makeImportant(macario, "$sdtu_deliverNews", Stage.DELIVER_NEWS);
153
154 connectWithGlobalFlag(Stage.MEET_RAM, Stage.INTERCEPT_FLEET, "$sdtu_interceptFleet");
155 connectWithGlobalFlag(Stage.INTERCEPT_FLEET, Stage.MEET_HYDER, "$sdtu_meetHyder");
156 connectWithGlobalFlag(Stage.MEET_HYDER, Stage.RETURN_TO_MACARIO, "$sdtu_reportToMacario1");
157 connectWithGlobalFlag(Stage.RETURN_TO_MACARIO, Stage.EXTRACT_AGENT, "$sdtu_extractAgent");
158 connectWithGlobalFlag(Stage.EXTRACT_AGENT, Stage.MEET_CADEN, "$sdtu_meetCaden");
159 connectWithGlobalFlag(Stage.MEET_CADEN, Stage.AGAIN_WTH_MACARIO, "$sdtu_reportToMacario2");
160 connectWithGlobalFlag(Stage.AGAIN_WTH_MACARIO, Stage.EMERGENCY_INTERCEPT, "$sdtu_emergencyIntercept");
161 connectWithGlobalFlag(Stage.EMERGENCY_INTERCEPT, Stage.DELIVER_NEWS, "$sdtu_deliverNews");
162
163 setStageOnGlobalFlag(Stage.COMPLETED, "$sdtu_completed");
164
165 setRepFactionChangesNone();
166 setRepPersonChangesNone();
167
168
169 // Diktat patrol with "traitor" officer for player to intercept.
170 beginStageTrigger(Stage.INTERCEPT_FLEET);
171 triggerCreateFleet(FleetSize.SMALL, FleetQuality.DEFAULT, Factions.DIKTAT, FleetTypes.PATROL_MEDIUM, sindria.getStarSystem());
172 triggerMakeNonHostile();
173 triggerMakeNoRepImpact();
174 triggerMakeFleetIgnoredByOtherFleets();
175 triggerMakeFleetIgnoreOtherFleetsExceptPlayer();
176 triggerMakeFleetIgnoreOtherFleetsExceptPlayer(); // don't go chasing others, please.
177 triggerPickLocationAroundEntity(volturn.getPlanetEntity(), 800f);
178 triggerSetFleetMissionRef("$sdtu_ref"); // so they can be made unimportant
179 triggerFleetMakeImportant(null, Stage.INTERCEPT_FLEET);
180 triggerFleetAddDefeatTrigger("sdtuPatrolDefeated");
181 triggerSaveGlobalFleetRef("$sdtu_traitorPatrol");
182 triggerSetPatrol();
183 triggerOrderFleetPatrol(sindria.getStarSystem());
184 triggerSpawnFleetAtPickedLocation("$sdtu_interceptFleet", null);
185
186 endTrigger();
187
188 // Pirate/ANTIs fleet to distract player on approach to Umbra; otherwise irrelevant to plot.
189 beginStageTrigger(Stage.EXTRACT_AGENT);
190 triggerCreateFleet(FleetSize.LARGE, FleetQuality.DEFAULT, Factions.PIRATES, FleetTypes.PATROL_MEDIUM, umbra.getPlanetEntity());
191 triggerFleetSetName("ARC Raider Flotilla");
192 triggerSetFleetFaction(Factions.PIRATES);
193 triggerAutoAdjustFleetStrengthMajor();
194 triggerSetStandardAggroPirateFlags();
195 // triggerFleetAllowLongPursuit(); // they're not *that* dedicated
196 triggerPickLocationTowardsPlayer(umbra.getPlanetEntity(), 90f, getUnits(0.25f));
197 triggerPickLocationAroundEntity(umbra.getPlanetEntity(), 200f);
198 triggerSpawnFleetAtPickedLocation("$sdtu_antisFleet", null);
199 triggerSetFleetMissionRef("$sdtu_ref");
200 endTrigger();
201
202 // Pirate/ANTIs fleet to distract player when leaving Umbra; otherwise irrelevant to plot.
203 beginStageTrigger(Stage.MEET_CADEN);
204 triggerCreateFleet(FleetSize.LARGER, FleetQuality.DEFAULT, Factions.PIRATES, FleetTypes.PATROL_LARGE, umbra.getPlanetEntity());
205 triggerFleetSetName("ARC Raider Patrol");
206 triggerSetFleetFaction(Factions.PIRATES);
207 triggerAutoAdjustFleetStrengthMajor();
208 triggerSetStandardAggroPirateFlags();
209 //triggerFleetAllowLongPursuit();
210 triggerPickLocationAroundEntity(umbra.getPlanetEntity(), 500f);
211 triggerSpawnFleetAtPickedLocation("$sdtu_antisRevengeFleet", null);
212 triggerSetFleetMissionRef("$sdtu_ref");
213 endTrigger();
214
215 // I guess you can go nuts once this is done, even though it isn't quite done, is it.
216 beginStageTrigger(Stage.COMPLETED);
217 triggerSetGlobalMemoryValue("$sdtu_missionCompleted", true);
218 triggerMakeNonStoryCritical(volturn, umbra, sindria);
219 endTrigger();
220
221 return true;
222 }
223
224 protected void updateInteractionDataImpl() {
225 set("$sdtu_stage", getCurrentStage());
226 set("$sdtu_extractAgentRaidDifficulty", EXTACT_AGENT_RAID_DIFFICULTY);
227 set("$sdtu_marineLosses", marineLosses);
228 set("$sdtu_patrolSecond", patrolSecond);
229 //set("$sdtu_patrolFleet", diktatPatrolFleet)
230 //set("$sdtu_payment", Misc.getWithDGS(payment));
231 //set("$sdtu_paymentHigh", Misc.getWithDGS(paymentHigh));
232 set("$sdtu_xpRewardLow", xpRewardLow);
233 set("$sdtu_xpRewardMedium", xpRewardMedium);
234 set("$sdtu_xpRewardHigh", xpRewardHigh);
235 }
236
237 @Override
238 protected boolean callAction(String action, String ruleId, final InteractionDialogAPI dialog,
239 List<Token> params, final Map<String, MemoryAPI> memoryMap) {
240// if ("THEDUEL".equals(action)) {
241// TextPanelAPI text = dialog.getTextPanel();
242// text.setFontOrbitronUnnecessarilyLarge();
243// Color color = Misc.getBasePlayerColor();
244// color = Global.getSector().getFaction(Factions.HEGEMONY).getBaseUIColor();
245// text.addPara("THE DUEL", color);
246// text.setFontInsignia();
247// text.addImage("misc", "THEDUEL");
248// return true;
249// }
250
251 if ("spawnDebris".equals(action)) {
252 StarSystemAPI system = sindria.getStarSystem();
253 DebrisFieldParams p = new DebrisFieldParams(
254 150f, // field radius - should not go above 1000 for performance reasons
255 -1f, // density, visual - affects number of debris pieces
256 10000000f, // duration in days
257 0f); // days the field will keep generating glowing pieces
258 p.source = DebrisFieldSource.MIXED;
259 p.baseSalvageXP = 500; // base XP for scavenging in field
260 debris = Misc.addDebrisField(system, p, StarSystemGenerator.random);
261 SalvageSpecialAssigner.assignSpecialForDebrisField(debris);
262 debris.getMemoryWithoutUpdate().set("$sdtuAgentDebris", true);
263
264 List<SectorEntityToken> jumpPoints = system.getJumpPoints();
265 debris.setCircularOrbit(jumpPoints.get(jumpPoints.size()-1), 90, 200, 100);
266
267
268 Misc.makeImportant(debris, getMissionId());
269
270 // Merc who blew away the agent.
271 beginStageTrigger(Stage.EMERGENCY_INTERCEPT);
272 triggerCreateFleet(FleetSize.MEDIUM, FleetQuality.VERY_HIGH, Factions.MERCENARY, FleetTypes.MERC_PRIVATEER, system);
273 triggerSetFleetFaction(Factions.INDEPENDENT);
274 triggerFleetSetName("Mercenary Bounty Hunter");
275 triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
276 triggerMakeHostileAndAggressive();
277 triggerMakeNoRepImpact();
278 //triggerFleetAllowLongPursuit();
279 //triggerSetFleetAlwaysPursue();
280 triggerPickLocationAroundEntity(debris, 500f);
281 triggerSpawnFleetAtPickedLocation("$sdtu_merc", null);
282 triggerOrderFleetPatrol(true, debris);
283 endTrigger();
284
285 return true;
286 } else if ("makeDerbisUnimportant".equals(action)) {
287 // need to probably store the debris in a member variable to get to it here
288 if (debris != null)
289 {
290 Misc.makeUnimportant(debris, getMissionId());
291 }
292 return true;
293 }
294 else if ("shootEm".equals(action))
295 {
296 Global.getSoundPlayer().playSound("storyevent_diktat_execution", 1, 1, Global.getSoundPlayer().getListenerPos(), new Vector2f());
297 return true;
298 }
299 else if ("endMusic".equals(action))
300 {
303 //Global.getSoundPlayer().restartCurrentMusic();
304 return true;
305 }
306 else if ("playMusicMacario".equals(action))
307 {
308 Global.getSoundPlayer().playCustomMusic(1, 1, "music_diktat_market_hostile", true);
309 return true;
310 }
311 else if ("playMusicCaden".equals(action))
312 {
313 Global.getSoundPlayer().playCustomMusic(1, 1, "music_diktat_encounter_hostile", true);
314 return true;
315 }
316 else if ("playMusicHyder".equals(action))
317 {
318 Global.getSoundPlayer().playCustomMusic(1, 1, "music_diktat_encounter_friendly", true);
319 return true;
320 }
321 else if ("playMusicSons".equals(action))
322 {
323 Global.getSoundPlayer().playCustomMusic(1, 1, "music_diktat_market_friendly", true);
324 return true;
325 }
326 else if ("resumeMusic".equals(action))
327 {
330 return true;
331 }
332 else if ("giveKineticBlasters".equals(action)) {
333 CargoAPI cargo = Global.getSector().getPlayerFleet().getCargo();
334 cargo.addWeapons("kineticblaster", 3);
335 CargoStackAPI stack = Global.getFactory().createCargoStack(CargoItemType.RESOURCES, Commodities.SHIP_WEAPONS, cargo);
336 AddRemoveCommodity.addStackGainText(stack, dialog.getTextPanel());
337 return true;
338 }
339 else if ("giveGigacannon".equals(action)) {
340 CargoAPI cargo = Global.getSector().getPlayerFleet().getCargo();
341 cargo.addWeapons("gigacannon", 2);
342 CargoStackAPI stack = Global.getFactory().createCargoStack(CargoItemType.RESOURCES, Commodities.SHIP_WEAPONS, cargo);
343 AddRemoveCommodity.addStackGainText(stack, dialog.getTextPanel());
344 return true;
345 }
346 else if ("giveExecutor".equals(action)){
347 String variantId = "executor_Hull";
348 ShipVariantAPI variant = Global.getSettings().getVariant(variantId).clone();
349 FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, variant);
350 Global.getSector().getPlayerFleet().getFleetData().addFleetMember(member);
351 AddShip.addShipGainText(member, dialog.getTextPanel());
352 return true;
353 }
354 else if ("replacePatrolLeader".equals(action)) {
355
356 /*for (CampaignFleetAPI fleet : volturn.getStarSystem().getFleets()) {
357 if (fleet.getMemoryWithoutUpdate().contains("$sdtu_interceptFleet")) {
358 fleet.setCommander(patrolSecond);
359 }
360 }*/
361 CampaignFleetAPI fleet = (CampaignFleetAPI)dialog.getInteractionTarget();
362 fleet.setCommander(patrolSecond);
363 fleet.getAI().addAssignmentAtStart(FleetAssignment.STANDING_DOWN, fleet, 0.5f + 0.5f * (float) Math.random(), null);
364 //dialog.getInteractionTarget().setActivePerson(patrolSecond);
365
366 CampaignFleetAPI pf = Global.getSector().getPlayerFleet();
367 BattleAPI b = pf.getBattle();
368 if (b != null) {
369 b.leave(pf, false);
370 //b.finish(null);
371 }
372
373 //fleet.setNoEngaging(3f); // not needed
374 return true;
375 }
376 else if ("tryMakeHyderImportant".equals(action)){
377 for (CampaignFleetAPI fleet : volturn.getStarSystem().getFleets()) {
378 if (fleet.getName().equals("Askonia System Defense Armada")){
379 Misc.makeImportant(fleet, "$sdtu_ref");
380 }
381 }
382 return true;
383 }
384 else if ("tryMakeHyderUnimportant".equals(action)){
385 for (CampaignFleetAPI fleet : volturn.getStarSystem().getFleets()) {
386 if (fleet.getName().equals("Askonia System Defense Armada")){
387 Misc.makeUnimportant(fleet, "$sdtu_ref");
388 }
389 }
390 return true;
391 }
392 else if ("tryMakeCadenImportant".equals(action)){
393 for (CampaignFleetAPI fleet : volturn.getStarSystem().getFleets()) {
394 if (fleet.getName().equals("Lion's Guard Grand Armada")){
395 Misc.makeImportant(fleet, "$sdtu_ref");
396 }
397 }
398 return true;
399 }
400 else if ("tryMakeCadenUnimportant".equals(action)){
401 for (CampaignFleetAPI fleet : volturn.getStarSystem().getFleets()) {
402 if (fleet.getName().equals("Lion's Guard Grand Armada")){
403 Misc.makeUnimportant(fleet, "$sdtu_ref");
404 }
405 }
406 return true;
407 }
408 else if ("makeMercHostile".equals(action)){
409 for (CampaignFleetAPI fleet : volturn.getStarSystem().getFleets()) {
410 if (fleet.getMemoryWithoutUpdate().contains("$sdtu_merc")){
411 //Misc.makeUnimportant(fleet, "$sdtu_ref");
412 fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_ALLOW_LONG_PURSUIT, true);
413 //fleet.getMemoryWithoutUpdate().set("$ignorePlayerCommRequests", true);
414 Misc.makeHostile(fleet);
415
416 AbilityPlugin eb = fleet.getAbility(Abilities.EMERGENCY_BURN);
417 if (eb != null && eb.isUsable()) eb.activate();
418 }
419 }
420 return true;
421
422 }
423
424
425 return super.callAction(action, ruleId, dialog, params, memoryMap);
426 }
427
428 @Override
429 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
430 float opad = 10f;
431 Color h = Misc.getHighlightColor();
432
433 //info.addImage(robed_man.getPortraitSprite(), width, 128, opad);
434
435 if (currentStage == Stage.MEET_RAM) {
436 info.addPara("Meet Yannick Ram at his safehouse on Volturn. He has a plan to save the Sindrian Diktat from itself.", opad);
437 addStandardMarketDesc("Ram gave you coordinates to his safehouse " + volturn.getOnOrAt(), volturn, info, opad);
438 }
439 else if (currentStage == Stage.INTERCEPT_FLEET) {
440 info.addPara("Find and intercept a Sindrian Diktat patrol fleet led by the 'treasonous' officer. It can be found in the Askonia system.", opad);
441 }
442 else if (currentStage == Stage.MEET_HYDER) {
443 info.addPara("Use the 'treasonous' officer as leverage to gain access to Deputy Star Marshal Hyder. She can be found in command of the Askonia System Defense Armada, a large warfleet patrolling the Askonia star system.", opad);
444 }
445 else if (currentStage == Stage.RETURN_TO_MACARIO) {
446 info.addPara("Report back to Macario about your conversation with Hyder.", opad);
447 addStandardMarketDesc("Chief High Inspector-General Macario is based " + sindria.getOnOrAt(), sindria, info, opad);
448 }
449 else if (currentStage == Stage.EXTRACT_AGENT) {
450 info.addPara("Extract a known double-agent who, while working for Horacio Caden, has betrayed the Sindrian Diktat.", opad);
451 addStandardMarketDesc("The 'treasonous' double-agent is based " + umbra.getOnOrAt(), umbra, info, opad);
452 }
453 else if (currentStage == Stage.MEET_CADEN) {
454 info.addPara("Use the 'treasonous' agent as leverage to gain access to Guard High Lieutenant-Executor Caden. He can be found in command of the Lion's Guard Grand Armada, a large warfleet patrolling the Askonia star system.", opad);
455 }
456 else if (currentStage == Stage.AGAIN_WTH_MACARIO) {
457 info.addPara("Report back to Macario about your conversation with Caden.", opad);
458 addStandardMarketDesc("Chief High Inspector-General Macario is based " + sindria.getOnOrAt(), sindria, info, opad);
459 }
460 else if (currentStage == Stage.EMERGENCY_INTERCEPT) {
461 info.addPara("Intercept and assist or capture Macario's agent at the Fringe Jump-point of Askonia.", opad);
462 }
463 else if (currentStage == Stage.DELIVER_NEWS) {
464 info.addPara("Report back to Macario with news of his agent's demise.", opad);
465 }
466 }
467
468 @Override
469 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
470 Color h = Misc.getHighlightColor();
471 if (currentStage == Stage.MEET_RAM) {
472 info.addPara("Meet Yannick Ram at his safehouse on Volturn.", tc, pad);
473 return true;
474 }
475 if (currentStage == Stage.INTERCEPT_FLEET) {
476 info.addPara("Intercept the traitor's patrol fleet in the Askonia system.", tc, pad);
477 return true;
478 }
479 else if (currentStage == Stage.MEET_HYDER) {
480 info.addPara("Speak with Oxana Hyder. She commands the Askonia System Defense Armada.", tc, pad);
481 return true;
482 }
483 else if (currentStage == Stage.RETURN_TO_MACARIO) {
484 info.addPara("Talk to Macario, on Sindria, about Hyder.", tc, pad);
485 return true;
486 }
487 else if (currentStage == Stage.EXTRACT_AGENT) {
488 info.addPara("Extract the double agent from Umbra.", tc, pad);
489 return true;
490 }
491 else if (currentStage == Stage.MEET_CADEN) {
492 info.addPara("Speak with Horacio Caden. He commands the Lion's Guard Grand Armada.", tc, pad);
493 return true;
494 }
495 else if (currentStage == Stage.AGAIN_WTH_MACARIO) {
496 info.addPara("Talk to Macario, on Sindria, about Caden.", tc, pad);
497 return true;
498 }
499 else if (currentStage == Stage.EMERGENCY_INTERCEPT) {
500 info.addPara("Intercept Macario's agent at the given location.", tc, pad);
501 return true;
502 }
503 else if (currentStage == Stage.DELIVER_NEWS) {
504 info.addPara("Return to Macario, on Sindria, with news of his agent's death.", tc, pad);
505 return true;
506 }
507 return false;
508 }
509
510 @Override
511 public String getBaseName() {
512 return "The Usurpers";
513 }
514
515 @Override
516 public String getPostfixForState() {
517 if (startingStage != null) {
518 return "";
519 }
520 return super.getPostfixForState();
521 }
522}
523
524
525
526
527
static SettingsAPI getSettings()
Definition Global.java:51
static SoundPlayerAPI getSoundPlayer()
Definition Global.java:43
static FactoryAPI getFactory()
Definition Global.java:35
static SectorAPI getSector()
Definition Global.java:59
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
boolean callAction(String action, String ruleId, final InteractionDialogAPI dialog, List< Token > params, final Map< String, MemoryAPI > memoryMap)
boolean create(MarketAPI createdAt, boolean barEvent)
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
FleetMemberAPI createFleetMember(FleetMemberType type, String variantOrWingId)
CargoStackAPI createCargoStack(CargoItemType type, Object data, CargoAPI cargo)
ShipVariantAPI getVariant(String variantId)
void setSuspendDefaultMusicPlayback(boolean suspendMusicPlayback)
void playCustomMusic(int fadeOutIfAny, int fadeIn, String musicSetId)
SoundAPI playSound(String id, float pitch, float volume, Vector2f loc, Vector2f vel)