Starsector API
Loading...
Searching...
No Matches
CBRemnant.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions.cb;
2
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.campaign.StarSystemAPI;
5import com.fs.starfarer.api.campaign.econ.MarketAPI;
6import com.fs.starfarer.api.impl.campaign.ids.Factions;
7import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
8import com.fs.starfarer.api.impl.campaign.ids.Skills;
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;
15import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
16
17public class CBRemnant extends BaseCustomBountyCreator {
18
19 public static float PROB_IN_SYSTEM_WITH_BASE = 0.5f;
20 public static float PROB_IN_SYSTEM_WITH_TAP = 0.25f;
21
22 @Override
23 public float getFrequency(HubMissionWithBarEvent mission, int difficulty) {
24 return super.getFrequency(mission, difficulty) * CBStats.REMNANT_FREQ;
25 }
26
27 public String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data) {
28 return " - Remnant Fleet";
29 }
30
31 @Override
32 public String getIconName() {
33 return Global.getSettings().getSpriteName("campaignMissions", "remnant_bounty");
34 }
35
36 @Override
37 public CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage) {
39 data.difficulty = difficulty;
40
41 //mission.requireSystem(this);
42 mission.requireSystemTags(ReqMode.NOT_ANY, Tags.THEME_CORE);
43// mission.requireSystemTags(ReqMode.ANY, Tags.THEME_RUINS, Tags.THEME_MISC, Tags.THEME_REMNANT,
44// Tags.THEME_DERELICT, Tags.THEME_REMNANT_DESTROYED);
45 mission.preferSystemInteresting();
46 mission.preferSystemUnexplored();
47 mission.requireSystemNotHasPulsar();
48 if (difficulty >= 9 && mission.rollProbability(PROB_IN_SYSTEM_WITH_BASE)) {
49 mission.preferSystemTags(ReqMode.ANY, Tags.THEME_REMNANT_MAIN);
50 mission.requireSystemTags(ReqMode.NOT_ANY, Tags.THEME_REMNANT_DESTROYED);
51 } else if (mission.rollProbability(PROB_IN_SYSTEM_WITH_TAP)) {
52 mission.preferSystemTags(ReqMode.ANY, Tags.HAS_CORONAL_TAP);
53 } else {
54 mission.preferSystemBlackHoleOrNebula();
55 mission.preferSystemOnFringeOfSector();
56 }
57
58 StarSystemAPI system = mission.pickSystem();
59 data.system = system;
60
61 FleetSize size = FleetSize.MEDIUM;
62 FleetQuality quality = FleetQuality.VERY_HIGH;
63 OfficerQuality oQuality = OfficerQuality.AI_MIXED;
64 OfficerNum oNum = OfficerNum.ALL_SHIPS;
65 String type = FleetTypes.PATROL_SMALL;
66
67 if (difficulty == 7) {
68 size = FleetSize.LARGE;
69 type = FleetTypes.PATROL_MEDIUM;
70 oQuality = OfficerQuality.AI_BETA_OR_GAMMA;
71 } else if (difficulty == 8) {
72 size = FleetSize.VERY_LARGE;
73 type = FleetTypes.PATROL_LARGE;
74 oQuality = OfficerQuality.AI_MIXED;
75 } else if (difficulty == 9) {
76 size = FleetSize.HUGE;
77 type = FleetTypes.PATROL_LARGE;
78 oQuality = OfficerQuality.AI_ALPHA;
79 } else if (difficulty >= 10) {
80 size = FleetSize.MAXIMUM;
81 type = FleetTypes.PATROL_LARGE;
82 oQuality = OfficerQuality.AI_ALPHA;
83 }
84
85 //setIconName("campaignMissions", "station_bounty");
86
87 beginFleet(mission, data);
88 if (false) {
89 mission.triggerCreateFleet(FleetSize.LARGE, FleetQuality.SMOD_2, Factions.MERCENARY, FleetTypes.MERC_BOUNTY_HUNTER, data.system);
90 mission.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
91 mission.triggerSetFleetFaction(Factions.TRITACHYON);
92 mission.triggerMakeHostileAndAggressive();
93 mission.triggerMakeLowRepImpact();
94 mission.triggerSetFleetDoctrineComp(0, 0, 5);
95 mission.triggerFleetMakeFaster(true, 1, true);
96 } else {
97 mission.triggerCreateFleet(size, quality, Factions.REMNANTS, type, data.system);
98 mission.triggerSetFleetDoctrineQuality(5, 3, 5);
99 mission.triggerSetFleetOfficers(oNum, oQuality);
100 mission.triggerAutoAdjustFleetSize(size, size.next());
101 mission.triggerSetRemnantConfigActive();
102 mission.triggerSetFleetNoCommanderSkills();
103 mission.triggerFleetAddCommanderSkill(Skills.FLUX_REGULATION, 1);
104 //mission.triggerFleetAddCommanderSkill(Skills.ELECTRONIC_WARFARE, 1);
105 mission.triggerFleetAddCommanderSkill(Skills.COORDINATED_MANEUVERS, 1);
106
107 mission.triggerFleetSetAllWeapons();
108 }
109// if (difficulty >= 9) {
110// mission.triggerSetFleetDoctrineOther(5, -1);
111// }
112 //mission.triggerSetFleetDoctrineRandomize(1f);
113 //mission.triggerSetFleetDoctrineRandomize(0f);
114
115 mission.triggerPickLocationAtInSystemJumpPoint(data.system);
116 mission.triggerSpawnFleetAtPickedLocation(null, null);
117 //mission.triggerFleetSetPatrolActionText("patrolling");
118 mission.triggerOrderFleetPatrol(data.system, true, Tags.JUMP_POINT, Tags.NEUTRINO, Tags.NEUTRINO_HIGH, Tags.STATION,
119 Tags.SALVAGEABLE, Tags.GAS_GIANT);
120
121 data.fleet = createFleet(mission, data);
122 if (data.fleet == null) return null;
123
124 setRepChangesBasedOnDifficulty(data, difficulty);
125 data.baseReward = CBStats.getBaseBounty(difficulty, CBStats.REMNANT_MULT, mission);
126
127 return data;
128 }
129
130
131 @Override
132 public int getMaxDifficulty() {
133 return super.getMaxDifficulty();
134 }
135
136 @Override
137 public int getMinDifficulty() {
138 return 7;
139 }
140
141}
142
143
144
static SettingsAPI getSettings()
Definition Global.java:51
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
String getSpriteName(String category, String id)