Starsector API
Loading...
Searching...
No Matches
CBRemnantPlus.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions.cb;
2
3import java.util.List;
4
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.AICoreOfficerPlugin;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.StarSystemAPI;
9import com.fs.starfarer.api.campaign.econ.MarketAPI;
10import com.fs.starfarer.api.characters.PersonAPI;
11import com.fs.starfarer.api.fleet.FleetMemberAPI;
12import com.fs.starfarer.api.impl.campaign.ids.Commodities;
13import com.fs.starfarer.api.impl.campaign.ids.Factions;
14import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
15import com.fs.starfarer.api.impl.campaign.ids.Skills;
16import com.fs.starfarer.api.impl.campaign.ids.Tags;
17import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
18import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
19import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
20import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
21import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
22import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
23import com.fs.starfarer.api.loading.VariantSource;
24import com.fs.starfarer.api.util.Misc;
25import com.fs.starfarer.api.util.WeightedRandomPicker;
26
28
29 public static String ACCEPTED_KEY = "$CBRemnantPlus_accepted";
30 public static float PROB_IN_SYSTEM_WITH_BASE = 0.5f;
31
32 @Override
33 public float getBountyDays() {
35 }
36
37 @Override
38 public float getFrequency(HubMissionWithBarEvent mission, int difficulty) {
39 boolean wasEverAccepted = Global.getSector().getMemoryWithoutUpdate().getBoolean(ACCEPTED_KEY);
40 if (wasEverAccepted) return 0f;
41 return super.getFrequency(mission, difficulty) * CBStats.REMNANT_PLUS_FREQ;
42 }
43
44 @Override
45 public void notifyAccepted(MarketAPI createdAt, HubMissionWithBarEvent mission, CustomBountyData data) {
46 //mission.setNoAbandon();
48 }
49
50 @Override
51 protected boolean isRepeatableGlobally() {
52 return false;
53 }
54
56 return " - Unusual Remnant Fleet";
57 }
58
59 @Override
60 public String getIconName() {
61 return Global.getSettings().getSpriteName("campaignMissions", "remnant_bounty");
62 }
63
64 @Override
65 public CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage) {
67 data.difficulty = difficulty;
68
69 //mission.requireSystem(this);
72 mission.preferSystemUnexplored();
74// mission.requireSystemTags(ReqMode.ANY, Tags.THEME_RUINS, Tags.THEME_MISC, Tags.THEME_REMNANT,
75// Tags.THEME_DERELICT, Tags.THEME_REMNANT_DESTROYED);
79
80 StarSystemAPI system = mission.pickSystem();
81 data.system = system;
82
83 FleetSize size = FleetSize.HUGE;
84 FleetQuality quality = FleetQuality.SMOD_3;
85 OfficerQuality oQuality = OfficerQuality.AI_ALPHA;
86 OfficerNum oNum = OfficerNum.ALL_SHIPS;
87 String type = FleetTypes.PATROL_LARGE;
88
89 beginFleet(mission, data);
90 mission.triggerCreateFleet(size, quality, Factions.REMNANTS, type, data.system);
91 mission.triggerSetFleetOfficers(oNum, oQuality);
92 mission.triggerAutoAdjustFleetSize(size, size.next());
103 mission.triggerSpawnFleetAtPickedLocation(null, null);
104 mission.triggerFleetSetPatrolActionText("sending hyperwave signals");
107
108 data.fleet = createFleet(mission, data);
109 if (data.fleet == null) return null;
110
113 picker.add("tesseract_Attack");
114 picker.add("tesseract_Attack2");
115 picker.add("tesseract_Strike");
116 picker.add("tesseract_Disruptor");
117 fleet.getFleetData().addFleetMember(picker.pick());
118 FleetMemberAPI member = fleet.getFlagship();
119
122 member.setCaptain(person);
123
124 int i = data.fleet.getFleetData().getMembersListCopy().size() - 1;
127
128 data.fleet.setCommander(person);
129 data.fleet.getFleetData().addFleetMember(member);
130 data.fleet.getFleetData().sort();
131 List<FleetMemberAPI> members = data.fleet.getFleetData().getMembersListCopy();
132 for (FleetMemberAPI curr : members) {
133 curr.getRepairTracker().setCR(curr.getRepairTracker().getMaxCR());
134 }
135
136 member.setVariant(member.getVariant().clone(), false, false);
140
141 // otherwise, remnant dialog which isn't appropriate with an Omega in charge
142 data.fleet.getMemoryWithoutUpdate().set("$ignorePlayerCommRequests", true);
143
144 setRepChangesBasedOnDifficulty(data, difficulty);
145 data.baseReward = CBStats.getBaseBounty(difficulty, CBStats.REMNANT_PLUS_MULT, mission);
146
147 return data;
148 }
149
150
151 @Override
152 public int getMaxDifficulty() {
153 return super.getMaxDifficulty();
154 }
155
156 @Override
157 public int getMinDifficulty() {
158 return super.getMaxDifficulty();
159 }
160
161}
162
163
164
165
166
167
static SettingsAPI getSettings()
Definition Global.java:57
static FactoryAPI getFactory()
Definition Global.java:41
static SectorAPI getSector()
Definition Global.java:65
static final String VARIANT_CONSISTENT_WEAPON_DROPS
Definition Tags.java:76
void beginFleet(HubMissionWithBarEvent mission, CustomBountyData data)
CampaignFleetAPI createFleet(HubMissionWithBarEvent mission, CustomBountyData data)
float getFrequency(HubMissionWithBarEvent mission, int difficulty)
CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage)
void notifyAccepted(MarketAPI createdAt, HubMissionWithBarEvent mission, CustomBountyData data)
String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data)
static int getBaseBounty(int difficulty, float mult, BaseHubMission mission)
Definition CBStats.java:83
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, StarSystemAPI roughlyWhere)
static AICoreOfficerPlugin getAICoreOfficerPlugin(String commodityId)
Definition Misc.java:4230
CampaignFleetAPI createEmptyFleet(String factionId, String name, boolean aiMode)
String getSpriteName(String category, String id)
PersonAPI createPerson(String aiCoreId, String factionId, Random random)
void addFleetMember(FleetMemberAPI member)
void removeFleetMember(FleetMemberAPI member)
List< FleetMemberAPI > getMembersListCopy()
void set(String key, Object value)
void setSource(VariantSource source)
void setCaptain(PersonAPI commander)
void setVariant(ShipVariantAPI variant, boolean withRefit, boolean withStatsUpdate)