Starsector API
Loading...
Searching...
No Matches
GATransverseJump.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions.academy;
2
3import java.util.List;
4import java.util.Map;
5
6import java.awt.Color;
7
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.InteractionDialogAPI;
11import com.fs.starfarer.api.campaign.PlanetAPI;
12import com.fs.starfarer.api.campaign.SectorEntityToken;
13import com.fs.starfarer.api.campaign.StarSystemAPI;
14import com.fs.starfarer.api.campaign.econ.MarketAPI;
15import com.fs.starfarer.api.campaign.rules.MemoryAPI;
16import com.fs.starfarer.api.characters.PersonAPI;
17import com.fs.starfarer.api.impl.campaign.ids.Factions;
18import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
19import com.fs.starfarer.api.impl.campaign.ids.Ranks;
20import com.fs.starfarer.api.impl.campaign.ids.Tags;
21import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
22import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.TransmitterTrapSpecial;
23import com.fs.starfarer.api.ui.TooltipMakerAPI;
24import com.fs.starfarer.api.util.Misc;
25import com.fs.starfarer.api.util.Misc.Token;
26
27public class GATransverseJump extends GABaseMission {
28
29 public static enum Stage {
30 GO_TO_OUTPOST,
31 RETURN_TO_ACADEMY,
32 COMPLETED,
33 FAILED,
34 }
35
36 //public static List<SectorEntityToken> system_jumppoints;
37
39 protected PlanetAPI planet;
41
42 @Override
43 protected boolean create(MarketAPI createdAt, boolean barEvent) {
44 // replaced this with "non_repeatable" tag in person_missions.csv
45 // if this mission was EVER completed by the player, abort!
46 //if (getCreator().getNumCompleted() > 0) return false;
47
48 // if this mission type was already accepted by the player, abort
49 if (!setGlobalReference("$gaTJ_ref")) {
50 return false;
51 }
52
53 //genRandom = Misc.random; // for testing purposes to roll new search results each time
54
56 // expanded from just THEME_MISC
57 // since the various jump point-related requirements narrows down the valid options
66 //preferSystemInDirectionOfOtherMissions();
73
75
76 if (planet == null) {
77 return false;
78 }
79
81
82 setStartingStage(Stage.GO_TO_OUTPOST);
83 addSuccessStages(Stage.COMPLETED);
84 addFailureStages(Stage.FAILED);
85
87
88 //setMusic(planet, MusicPlayerPluginImpl.MUSIC_ENCOUNTER_MYSTERIOUS_AGGRO, Stage.GO_TO_OUTPOST);
89
90 makeImportant(planet, "$gaTJ_targetPlanet", Stage.GO_TO_OUTPOST);
91 makeImportant(getPerson(), "$gaTJ_needToReturn", Stage.RETURN_TO_ACADEMY);
92
93 connectWithGlobalFlag(Stage.GO_TO_OUTPOST, Stage.RETURN_TO_ACADEMY, "$gaTJ_needToReturn");
94 setStageOnGlobalFlag(Stage.COMPLETED, "$gaTJ_completed");
95
96
97 setCreditReward(CreditReward.HIGH);
98
102
103 // Tri-Tach black ops merc patrol(s) spawn
104 // ideally spawned to guard all possible system jump-points
105 // then, once player grabs Baird's spy, they all move to planet and start search pattern
106
107 List<SectorEntityToken> jumpPoints = system.getJumpPoints();
108 for (SectorEntityToken point : jumpPoints) {
109 addMercFleet(point);
110 }
111
112 beginStageTrigger(Stage.COMPLETED);
113 triggerSetGlobalMemoryValuePermanent("$asebSayBairdWantsToTalk", true);
114 endTrigger();
115
116 setSystemWasUsedForStory(Stage.GO_TO_OUTPOST, system);
117
118 return true;
119 }
120
121 @Override
122 protected boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List<Token> params,
123 Map<String, MemoryAPI> memoryMap) {
124 if (dialog != null && action.equals("showResearcher")) {
125 showPersonInfo(researcher, dialog, false, false);
126 return true;
127 }
128 if ("triggerMercFleets".equals(action)) {
129 for (CampaignFleetAPI fleet : system.getFleets()) {
130 if (fleet.getMemoryWithoutUpdate().contains("$gaTJ_merc")) {
131 TransmitterTrapSpecial.makeFleetInterceptPlayer(fleet, true, false, true, 1000f);
132 }
133 }
134
135 return true;
136 }
137 return false;
138 }
139
140 protected void updateInteractionDataImpl() {
141 set("$gaTJ_planetId", planet.getId());
142 set("$gaTJ_planetName", planet.getName());
143 set("$gaTJ_systemName", planet.getStarSystem().getNameWithNoType());
144 set("$gaTJ_dist", getDistanceLY(planet));
145 set("$gaTJ_reward", Misc.getWithDGS(getCreditsReward()));
146 set("$gaTJ_researcherName", researcher.getNameString());
147 set("$gaTJ_heOrShe", researcher.getHeOrShe());
148 set("$gaTJ_HeOrShe", researcher.getHeOrShe().substring(0, 1).toUpperCase() + researcher.getHeOrShe().substring(1));
149 set("$gaTJ_hisOrHer", researcher.getHisOrHer());
150 set("$gaTJ_HisOrHet", researcher.getHisOrHer().substring(0, 1).toUpperCase() + researcher.getHisOrHer().substring(1));
151 set("$gaTJ_himOrHer", researcher.getHimOrHer());
152 set("$gaTJ_HimOrHet", researcher.getHimOrHer().substring(0, 1).toUpperCase() + researcher.getHimOrHer().substring(1));
153
154 }
155
156 @Override
157 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
158 float opad = 10f;
159 Color h = Misc.getHighlightColor();
160 if (currentStage == Stage.GO_TO_OUTPOST) {
162 ", and contact the 'researcher' at the Tri-Tachyon black research site located there.", opad);
163 } else if (currentStage == Stage.RETURN_TO_ACADEMY) {
164 // shared way to get the same text to ensure consistency across different missions
165 info.addPara(getReturnText("the Galatia Academy") + ".", opad);
166 }
167 }
168
169 @Override
170 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
171 Color h = Misc.getHighlightColor();
172 if (currentStage == Stage.GO_TO_OUTPOST) {
173 info.addPara(getGoToPlanetTextShort(planet), tc, pad);
174 return true;
175 } else if (currentStage == Stage.RETURN_TO_ACADEMY) {
176 // shared way to get the same text to ensure consistency across different missions
177 info.addPara(getReturnTextShort("the Galatia Academy"), tc, pad);
178 return true;
179 }
180 return false;
181 }
182
183 @Override
184 public String getBaseName() {
185 return "Extract 'Researcher'";
186 }
187
188 protected void addMercFleet(SectorEntityToken patrolPoint) {
189 // changed requirePlayerInHyperspace to false so that if ctrl-clicking into the system, the mercs
190 // still spawn. Generally only want to requirePlayerInHyperspace for an encounter intended to be in
191 // hyperspace, and even then that's situational
192 beginWithinHyperspaceRangeTrigger(planet, 3f, false, Stage.GO_TO_OUTPOST);
193 triggerCreateFleet(FleetSize.LARGE, FleetQuality.VERY_HIGH, Factions.MERCENARY, FleetTypes.PATROL_LARGE, system);
195 triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
196
197 // do we want this here? Probably not, this is a one-off mission and so the strength shouldn't scale
198 //triggerAutoAdjustFleetStrengthMajor();
199
204
205 triggerPickLocationAroundEntity(patrolPoint, 1000f);
206 triggerSpawnFleetAtPickedLocation("$gaTJ_merc", null);
207 triggerOrderFleetPatrol(true, patrolPoint);
208
209 //triggerFleetMakeImportant(null, Stage.RETURN_TO_ACADEMY);
210 endTrigger();
211 }
212}
213
214
215
216
217
static SectorAPI getSector()
Definition Global.java:65
boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void connectWithGlobalFlag(Object from, Object to, String flag)
void showPersonInfo(PersonAPI person, InteractionDialogAPI dialog, boolean withFaction, boolean withRelBar)
void makeImportant(PersonAPI person, String flag, Enum ... stages)
void beginWithinHyperspaceRangeTrigger(SectorEntityToken entity, float rangeLY, boolean requirePlayerInHyperspace, Object ... stages)
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, StarSystemAPI roughlyWhere)
static void makeFleetInterceptPlayer(CampaignFleetAPI fleet, boolean makeAggressive, boolean makeLowRepImpact, float interceptDays)
static String getWithDGS(float num)
Definition Misc.java:1381
static Color getHighlightColor()
Definition Misc.java:792
List< SectorEntityToken > getJumpPoints()
List< CampaignFleetAPI > getFleets()
FactionAPI getFaction(String factionId)
LabelAPI addPara(String format, float pad, Color hl, String... highlights)