Starsector API
Loading...
Searching...
No Matches
CBPather.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 CBPather 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.LUDDIC_PATH.equals(mission.getPerson().getFaction().getId())) return 0f;
21 return super.getFrequency(mission, difficulty) * CBStats.PATHER_FREQ;
22 }
23
24 public String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data) {
25 return " - Pather";
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 mission.requireSystemNotHasPulsar();
42 if (difficulty >= 4 && mission.rollProbability(PROB_IN_SYSTEM_WITH_BASE)) {
43 mission.preferSystemHasBase(Factions.LUDDIC_PATH);
44 }
45 StarSystemAPI system = mission.pickSystem();
46 data.system = system;
47
48 FleetSize size = FleetSize.MEDIUM;
49 FleetQuality quality = FleetQuality.DEFAULT;
50 String type = FleetTypes.PATROL_MEDIUM;
51 OfficerQuality oQuality = OfficerQuality.DEFAULT;
52 OfficerNum oNum = OfficerNum.DEFAULT;
53
54 String factionId = Factions.LUDDIC_PATH;
55
56 if (difficulty <= 0) {
57 size = FleetSize.TINY;
58 quality = FleetQuality.VERY_LOW;
59 oQuality = OfficerQuality.LOWER;
60 oNum = OfficerNum.FC_ONLY;
61 type = FleetTypes.PATROL_SMALL;
62 } else if (difficulty == 1) {
63 size = FleetSize.VERY_SMALL;
64 quality = FleetQuality.VERY_LOW;
65 oQuality = OfficerQuality.LOWER;
66 oNum = OfficerNum.FC_ONLY;
67 type = FleetTypes.PATROL_SMALL;
68 } else if (difficulty == 2) {
69 size = FleetSize.SMALL;
70 quality = FleetQuality.DEFAULT;
71 oQuality = OfficerQuality.LOWER;
72 oNum = OfficerNum.FEWER;
73 type = FleetTypes.PATROL_SMALL;
74 } else if (difficulty == 3) {
75 size = FleetSize.SMALL;
76 quality = FleetQuality.DEFAULT;
77 oQuality = OfficerQuality.DEFAULT;
78 oNum = OfficerNum.DEFAULT;
79 type = FleetTypes.PATROL_MEDIUM;
80 } else if (difficulty == 4 || difficulty == 5) {
81 size = FleetSize.MEDIUM;
82 quality = FleetQuality.DEFAULT;
83 oQuality = OfficerQuality.DEFAULT;
84 oNum = OfficerNum.DEFAULT;
85 type = FleetTypes.PATROL_MEDIUM;
86 } else if (difficulty == 6) {
87 size = FleetSize.LARGE;
88 quality = FleetQuality.DEFAULT;
89 oQuality = OfficerQuality.DEFAULT;
90 oNum = OfficerNum.DEFAULT;
91 type = FleetTypes.PATROL_LARGE;
92 } else if (difficulty == 7) {
93 size = FleetSize.LARGE;
94 quality = FleetQuality.HIGHER;
95 oQuality = OfficerQuality.DEFAULT;
96 oNum = OfficerNum.MORE;
97 type = FleetTypes.PATROL_LARGE;
98 } else if (difficulty == 8) {
99 size = FleetSize.VERY_LARGE;
100 quality = FleetQuality.HIGHER;
101 oQuality = OfficerQuality.DEFAULT;
102 oNum = OfficerNum.MORE;
103 type = FleetTypes.PATROL_LARGE;
104 } else if (difficulty == 9) {
105 size = FleetSize.HUGE;
106 quality = FleetQuality.HIGHER;
107 oQuality = OfficerQuality.HIGHER;
108 oNum = OfficerNum.MORE;
109 type = FleetTypes.PATROL_LARGE;
110 } else {// if (difficulty == 10) {
111 size = FleetSize.MAXIMUM;
112 quality = FleetQuality.HIGHER;
113 oQuality = OfficerQuality.HIGHER;
114 //oNum = OfficerNum.ALL_SHIPS;
115 oNum = OfficerNum.MORE;
116 type = FleetTypes.PATROL_LARGE;
117 }
118
119 beginFleet(mission, data);
120 mission.triggerCreateFleet(size, quality, factionId, type, data.system);
121 mission.triggerSetFleetOfficers(oNum, oQuality);
122 mission.triggerFleetPatherNoDefaultTithe();
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.PATHER_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)
CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage)
Definition CBPather.java:29
float getFrequency(HubMissionWithBarEvent mission, int difficulty)
Definition CBPather.java:19
String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data)
Definition CBPather.java:24
static int getBaseBounty(int difficulty, float mult, BaseHubMission mission)
Definition CBStats.java:83