Starsector API
Loading...
Searching...
No Matches
DisruptCompetitorMission.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions;
2
3import java.awt.Color;
4
5import org.lwjgl.util.vector.Vector2f;
6
7import com.fs.starfarer.api.campaign.PersonImportance;
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.FleetTypes;
12import com.fs.starfarer.api.impl.campaign.ids.Ranks;
13import com.fs.starfarer.api.impl.campaign.ids.Tags;
14import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
15import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidDangerLevel;
16import com.fs.starfarer.api.ui.TooltipMakerAPI;
17import com.fs.starfarer.api.util.Misc;
18
20
21 public static float PROB_COMPLICATIONS = 0.25f;
22
23 public static float MISSION_DAYS = 120f;
24
25 public static RaidDangerLevel RAID_DANGER = RaidDangerLevel.MEDIUM;
26
27 public static enum Stage {
28 DISRUPT,
29 COMPLETED,
30 FAILED,
31 }
32
33 protected MarketAPI market;
34
35 @Override
36 protected boolean create(MarketAPI createdAt, boolean barEvent) {
37 //genRandom = Misc.random;
38 if (barEvent) {
44 setGiverPost(post);
45 if (post.equals(Ranks.POST_SENIOR_EXECUTIVE)) {
47 } else {
49 }
51 findOrCreateGiver(createdAt, false, false);
52 }
53
54 PersonAPI person = getPerson();
55 if (person == null) return false;
56
57
58 if (!setPersonMissionRef(person, "$dcom_ref")) {
59 return false;
60 }
61
62 if (barEvent) {
64 }
65
66 PersonImportance importance = person.getImportance();
67 int minMarketSize = 3;
68 int maxMarketSize = 9;
69 switch (importance) {
70 case VERY_LOW:
71 minMarketSize = 3;
72 maxMarketSize = 4;
73 break;
74 case LOW:
75 minMarketSize = 4;
76 maxMarketSize = 4;
77 break;
78 case MEDIUM:
79 minMarketSize = 5;
80 maxMarketSize = 5;
81 break;
82 case HIGH:
83 minMarketSize = 5;
84 maxMarketSize = 6;
85 break;
86 case VERY_HIGH:
87 minMarketSize = 6;
88 maxMarketSize = 8;
89 break;
90 }
91 requireMarketIsNot(createdAt);
95 preferMarketSizeAtLeast(minMarketSize);
96 preferMarketSizeAtMost(maxMarketSize);
98
99 if (market == null) return false;
100 if (!setMarketMissionRef(market, "$dcom_ref")) {
101 return false;
102 }
103
106 return false;
107 }
108
109 makeImportant(market, "$dcom_target", Stage.DISRUPT);
110
111 setStartingStage(Stage.DISRUPT);
112 setSuccessStage(Stage.COMPLETED);
113 setFailureStage(Stage.FAILED);
114
115 setStageOnMemoryFlag(Stage.COMPLETED, market, "$dcom_completed");
116 setTimeLimit(Stage.FAILED, MISSION_DAYS, null);
117
118 //int sizeModifier = market.getSize() * 10000;
119 //setCreditReward(10000 + sizeModifier, 30000 + sizeModifier);
120 //setCreditReward(CreditReward.AVERAGE, market.getSize());
121
123 setCreditRewardWithBonus(CreditReward.AVERAGE, bonus);
124
125 return true;
126 }
127
128
129 @Override
130 protected void notifyEnding() {
131 super.notifyEnding();
132
135 //e.setDelay(0f);
136 e.setDelayMedium();
138 //e.setEncounterInHyper();
139 e.beginCreate();
140 e.triggerCreateFleet(FleetSize.LARGE, FleetQuality.SMOD_1, Factions.MERCENARY, FleetTypes.PATROL_LARGE, new Vector2f());
141 e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
146 e.triggerSetFleetMemoryValue("$dcom_marketName", market.getName());
147 e.triggerSetFleetMemoryValue("$dcom_marketOnOrAt", market.getOnOrAt());
148 e.triggerSetFleetGenericHailPermanent("DCOMMercHail");
149 e.endCreate();
150 }
151 }
152
153
154
155 protected void updateInteractionDataImpl() {
156 set("$dcom_barEvent", isBarEvent());
157 set("$dcom_manOrWoman", getPerson().getManOrWoman());
158 set("$dcom_hisOrHer", getPerson().getHisOrHer());
159 set("$dcom_reward", Misc.getWithDGS(getCreditsReward()));
160
161 set("$dcom_systemName", market.getStarSystem().getNameWithLowercaseTypeShort());
162 set("$dcom_marketName", market.getName());
163 set("$dcom_marketOnOrAt", market.getOnOrAt());
164 set("$dcom_dist", getDistanceLY(market));
165 set("$dcom_marketFactionArticle", market.getFaction().getPersonNamePrefixAOrAn());
166 set("$dcom_marketFaction", market.getFaction().getPersonNamePrefix());
167 set("$dcom_factionColor", market.getFaction().getBaseUIColor());
168 set("$dcom_danger", RAID_DANGER);
169
171 }
172
173 @Override
174 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) {
175 float opad = 10f;
176 Color h = Misc.getHighlightColor();
177 if (currentStage == Stage.DISRUPT) {
178 info.addPara("Disrupt a competitor of " + getPerson().getNameString() + " by raiding their warehouse " +
179 market.getOnOrAt() + " " + market.getName() +
180 " in the " + market.getStarSystem().getNameWithLowercaseTypeShort() + ".", opad);
181
183 }
184 }
185
186 @Override
187 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) {
188 Color h = Misc.getHighlightColor();
189 if (currentStage == Stage.DISRUPT) {
190 info.addPara("Raid warehouse " +
191 market.getOnOrAt() + " " + market.getName() + " in the " +
193 return true;
194 }
195 return false;
196 }
197
198 @Override
199 public String getBaseName() {
200 return "Disrupt Competitor";
201 }
202
203}
204
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, SectorEntityToken roughlyWhere)
void setLocationInnerSector(boolean allowInsidePopulatedSystems, String requireLargestMarketNotHostileToFaction)
void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height)
void setTimeLimit(Object failStage, float days, StarSystemAPI noLimitWhileInSystem, Object ... noLimitAfterStages)
int getMarinesRequiredForCustomObjective(MarketAPI market, RaidDangerLevel danger)
void addCustomRaidInfo(MarketAPI market, RaidDangerLevel danger, TooltipMakerAPI info, float pad)
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)