Starsector API
Loading...
Searching...
No Matches
CBDeserter.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions.cb;
2
3import com.fs.starfarer.api.campaign.FactionAPI;
4import com.fs.starfarer.api.campaign.FactionAPI.ShipPickMode;
5import com.fs.starfarer.api.campaign.StarSystemAPI;
6import com.fs.starfarer.api.campaign.econ.MarketAPI;
7import com.fs.starfarer.api.impl.campaign.ids.Factions;
8import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
9import com.fs.starfarer.api.impl.campaign.ids.Tags;
10import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
11import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
12import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
13import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
14import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
15
16public class CBDeserter extends BaseCustomBountyCreator {
17
18 @Override
19 public float getFrequency(HubMissionWithBarEvent mission, int difficulty) {
20 if (Factions.PIRATES.equals(mission.getPerson().getFaction().getId())) return 0f;
21 return super.getFrequency(mission, difficulty) * CBStats.DESERTER_FREQ;
22 }
23
24 public String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data) {
25 return " - Deserter";
26 }
27
28 @Override
29 public CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage) {
31 data.difficulty = difficulty;
32
33// mission.requireSystemTags(ReqMode.ANY, Tags.THEME_RUINS, Tags.THEME_MISC, Tags.THEME_REMNANT_SECONDARY,
34// Tags.THEME_DERELICT, Tags.THEME_REMNANT_DESTROYED);
35 mission.requireSystemInterestingAndNotUnsafeOrCore();
36 mission.requireSystemNotHasPulsar();
37 StarSystemAPI system = mission.pickSystem();
38 data.system = system;
39
40 FleetSize size = FleetSize.MEDIUM;
41 FleetQuality quality = FleetQuality.DEFAULT;
42 String type = FleetTypes.PATROL_MEDIUM;
43 OfficerQuality oQuality = OfficerQuality.DEFAULT;
44 OfficerNum oNum = OfficerNum.DEFAULT;
45
46 FactionAPI faction = mission.getPerson().getFaction();
47
48 if (difficulty <= 4) {
49 size = FleetSize.SMALL;
50 quality = FleetQuality.DEFAULT;
51 oQuality = OfficerQuality.DEFAULT;
52 oNum = OfficerNum.DEFAULT;
53 type = FleetTypes.PATROL_SMALL;
54 } else if (difficulty <= 5) {
55 size = FleetSize.MEDIUM;
56 quality = FleetQuality.DEFAULT;
57 oQuality = OfficerQuality.DEFAULT;
58 oNum = OfficerNum.DEFAULT;
59 type = FleetTypes.PATROL_MEDIUM;
60 } else if (difficulty == 6) {
61 size = FleetSize.LARGE;
62 quality = FleetQuality.DEFAULT;
63 oQuality = OfficerQuality.DEFAULT;
64 oNum = OfficerNum.DEFAULT;
65 type = FleetTypes.PATROL_LARGE;
66 } else if (difficulty == 7) {
67 size = FleetSize.LARGE;
68 quality = FleetQuality.HIGHER;
69 oQuality = OfficerQuality.DEFAULT;
70 oNum = OfficerNum.MORE;
71 type = FleetTypes.PATROL_LARGE;
72 } else if (difficulty == 8) {
73 size = FleetSize.VERY_LARGE;
74 quality = FleetQuality.HIGHER;
75 oQuality = OfficerQuality.DEFAULT;
76 oNum = OfficerNum.MORE;
77 type = FleetTypes.PATROL_LARGE;
78 } else if (difficulty == 9) {
79 size = FleetSize.HUGE;
80 quality = FleetQuality.HIGHER;
81 oQuality = OfficerQuality.HIGHER;
82 oNum = OfficerNum.MORE;
83 type = FleetTypes.PATROL_LARGE;
84 } else {
85 size = FleetSize.MAXIMUM;
86 quality = FleetQuality.HIGHER;
87 oQuality = OfficerQuality.HIGHER;
88 oNum = OfficerNum.MORE;
89 type = FleetTypes.PATROL_LARGE;
90 }
91
92 beginFleet(mission, data);
93 mission.triggerCreateFleet(size, quality, faction.getId(), type, data.system);
94 mission.triggerSetFleetOfficers(oNum, oQuality);
95 mission.triggerAutoAdjustFleetSize(size, size.next());
96 mission.triggerSetFleetFaction(Factions.PIRATES);
97 mission.triggerFleetSetShipPickMode(ShipPickMode.PRIORITY_THEN_ALL);
98
99 mission.triggerFleetSetNoFactionInName();
100 if (faction.getEntityNamePrefix() == null || faction.getEntityNamePrefix().isEmpty()) {
101 mission.triggerFleetSetName("Deserter");
102 } else {
103 mission.triggerFleetSetName(faction.getEntityNamePrefix() + " Deserter");
104 }
105
106 mission.triggerSetStandardAggroPirateFlags();
107 mission.triggerPickLocationAtInSystemJumpPoint(data.system);
108 mission.triggerSpawnFleetAtPickedLocation(null, null);
109 //mission.triggerOrderFleetPatrol(data.system);
110 mission.triggerOrderFleetPatrol(data.system, true, Tags.JUMP_POINT, Tags.SALVAGEABLE, Tags.PLANET);
111 data.fleet = createFleet(mission, data);
112 if (data.fleet == null) return null;
113
114 setRepChangesBasedOnDifficulty(data, difficulty);
115 data.baseReward = CBStats.getBaseBounty(difficulty, CBStats.DESERTER_MULT, mission);
116
117 return data;
118 }
119
120
121 @Override
122 public int getMaxDifficulty() {
123 return super.getMaxDifficulty();
124 }
125
126 @Override
127 public int getMinDifficulty() {
128 return 4;
129 }
130
131}
132
133
134
135
136
137
void beginFleet(HubMissionWithBarEvent mission, CustomBountyData data)
CampaignFleetAPI createFleet(HubMissionWithBarEvent mission, CustomBountyData data)
CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage)
String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data)
float getFrequency(HubMissionWithBarEvent mission, int difficulty)
static int getBaseBounty(int difficulty, float mult, BaseHubMission mission)
Definition CBStats.java:83