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