Starsector API
Loading...
Searching...
No Matches
GAReturnHamatsu.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 org.lwjgl.util.vector.Vector2f;
8
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.InteractionDialogAPI;
11import com.fs.starfarer.api.campaign.econ.MarketAPI;
12import com.fs.starfarer.api.campaign.rules.MemoryAPI;
13import com.fs.starfarer.api.characters.PersonAPI;
14import com.fs.starfarer.api.fleet.FleetMemberAPI;
15import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepRewards;
16import com.fs.starfarer.api.impl.campaign.ids.Factions;
17import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
18import com.fs.starfarer.api.impl.campaign.ids.People;
19import com.fs.starfarer.api.impl.campaign.missions.DelayedFleetEncounter;
20import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
21import com.fs.starfarer.api.impl.campaign.world.TTBlackSite;
22import com.fs.starfarer.api.ui.TooltipMakerAPI;
23import com.fs.starfarer.api.util.Misc;
24import com.fs.starfarer.api.util.Misc.Token;
25
26public class GAReturnHamatsu extends GABaseMission { //implements ShipRecoveryListener {
27
28 public static enum Stage {
29 RETURN_HAMATSU,
30 COMPLETED,
31 FAILED,
32 }
33
34 protected PersonAPI callisto;
35
36 @Override
37 protected boolean create(MarketAPI createdAt, boolean barEvent) {
38 if (!setGlobalReference("$gaRH_ref", null)) {
39 return false;
40 }
41
42 callisto = getImportantPerson(People.IBRAHIM);
43 if (callisto == null) return false;
44
45 setPersonOverride(callisto);
46
47 //setStoryMission();
48
49 setStartingStage(Stage.RETURN_HAMATSU);
50 addSuccessStages(Stage.COMPLETED);
51 addFailureStages(Stage.FAILED);
52
53 connectWithGlobalFlag(Stage.RETURN_HAMATSU, Stage.COMPLETED, "$gaRH_completed");
54 connectWithGlobalFlag(Stage.RETURN_HAMATSU, Stage.FAILED, "$gaRH_failed");
55 makeImportant(callisto, "$gaRH_returnHere", Stage.RETURN_HAMATSU);
56
57 setCreditReward(100000);
58 setRepRewardPerson(RepRewards.EXTREME);
59 setRepRewardFaction(RepRewards.HIGH);
60
61 setRepPenaltyPerson(0f); // handled in rules, is in fact very high
62 setRepPenaltyFaction(0f);
63
64 setPersonIsPotentialContactOnSuccess(callisto, 1f);
65
66 return true;
67 }
68
69 protected boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List<Token> params,
70 Map<String, MemoryAPI> memoryMap) {
71
72 if ("refusedToReturn".equals(action)) {
73 if (rollProbability(0.5f)) {
74 DelayedFleetEncounter e = new DelayedFleetEncounter(genRandom, getMissionId());
76 e.setLocationInnerSector(false, Factions.INDEPENDENT);
77 e.beginCreate();
78 e.triggerCreateFleet(FleetSize.MEDIUM, FleetQuality.VERY_HIGH, Factions.MERCENARY, FleetTypes.PATROL_LARGE, new Vector2f());
79 e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
80 e.triggerFleetSetFaction(Factions.INDEPENDENT);
81 e.triggerSetFleetFlag("$gaRH_consequences");
82 e.triggerMakeNoRepImpact();
84 e.endCreate();
85 }
86 return true;
87 } else if ("transferHamatsu".equals(action)) {
88 FleetMemberAPI hamatsu = null;
89 for (FleetMemberAPI member : Global.getSector().getPlayerFleet().getFleetData().getMembersListCopy()) {
90 if (member.getId().equals(TTBlackSite.HAMATSU_ID)) {
91 hamatsu = member;
92 break;
93 }
94 }
95 if (hamatsu != null) {
96 AddRemoveCommodity.addFleetMemberLossText(hamatsu, dialog.getTextPanel());
97 Global.getSector().getPlayerFleet().getFleetData().removeFleetMember(hamatsu);
98 }
99
100 return true;
101 }
102 return false;
103 }
104
105 protected void updateInteractionDataImpl() {
106 set("$gaRH_stage", getCurrentStage());
107 set("$gaRH_reward", Misc.getWithDGS(getCreditsReward()));
108 }
109
110 @Override
111 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
112 float opad = 10f;
113 Color h = Misc.getHighlightColor();
114 if (currentStage == Stage.RETURN_HAMATSU) {
115 addStandardMarketDesc("Deliver the ISS Hamatsu to " + callisto.getNameString()
116 + " " + callisto.getMarket().getOnOrAt() + "", callisto.getMarket(), info, opad);
117 info.addPara("She is sentimental about the ship - her first independent command - and is willing to pay a "
118 + "large sum for its return.", opad);
119 }
120 }
121
122 @Override
123 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
124 Color h = Misc.getHighlightColor();
125 if (currentStage == Stage.RETURN_HAMATSU) {
126 info.addPara("Deliver the ISS Hamatsu to " + callisto.getNameString(), tc, pad);
127 return true;
128 }
129 return false;
130 }
131
132 @Override
133 public String getBaseName() {
134 return "Return the ISS Hamatsu";
135 }
136
137 @Override
138 public String getPostfixForState() {
139 if (startingStage != null) {
140 return "";
141 }
142 return super.getPostfixForState();
143 }
144
145
146}
147
148
149
150
151
static SectorAPI getSector()
Definition Global.java:59
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, SectorEntityToken roughlyWhere)
void setLocationInnerSector(boolean allowInsidePopulatedSystems, String requireLargestMarketNotHostileToFaction)
boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)