1package com.fs.starfarer.api.impl.campaign.missions.cb;
4import java.util.ArrayList;
6import java.util.Random;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.FactionAPI;
11import com.fs.starfarer.api.campaign.StarSystemAPI;
12import com.fs.starfarer.api.campaign.TextPanelAPI;
13import com.fs.starfarer.api.campaign.econ.MarketAPI;
14import com.fs.starfarer.api.characters.PersonAPI;
15import com.fs.starfarer.api.fleet.FleetMemberAPI;
16import com.fs.starfarer.api.fleet.FleetMemberType;
17import com.fs.starfarer.api.impl.campaign.DebugFlags;
18import com.fs.starfarer.api.impl.campaign.ids.Factions;
19import com.fs.starfarer.api.impl.campaign.ids.Tags;
20import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
21import com.fs.starfarer.api.ui.TooltipMakerAPI;
22import com.fs.starfarer.api.util.Misc;
23import com.fs.starfarer.api.util.WeightedRandomPicker;
40 if (
getStations(mission, difficulty).isEmpty())
return 0f;
46 List<FleetMemberAPI> list =
new ArrayList<FleetMemberAPI>();
50 float iconSize = 440 / cols;
54 if (list.size() >= max)
break;
56 if (member.isFighterWing())
continue;
59 if (member.isFlagship()) {
65 if (!list.isEmpty()) {
69 "an intel assessment shows up on your tripad.", 0f);
73 info.
addPara(
"The station is assessed to be fully functional and extremely dangerous.", opad);
75 info.
addPara(
"The station is assessed to be damaged, but still highly dangerous.", opad);
87 float iconSize = width / cols;
94 boolean deflate =
false;
100 List<FleetMemberAPI> list =
new ArrayList<FleetMemberAPI>();
101 Random random =
new Random(person.
getNameString().hashCode() * 170000);
106 if (list.size() >= max)
break;
108 if (member.isFighterWing())
continue;
110 float prob = (float) member.getFleetPointCost() / 20f;
111 prob += (float) max / (
float) members.size();
112 if (member.isFlagship()) prob = 1f;
115 if (random.nextFloat() > prob)
continue;
118 if (member.isFlagship()) {
124 if (!list.isEmpty()) {
125 info.
addPara(
"The bounty posting contains partial intel about the station.", opad);
128 int num = members.size() - list.size();
131 if (num < 5) num = 0;
132 else if (num < 10) num = 5;
133 else if (num < 20) num = 10;
137 info.
addPara(
"The station is assessed to be fully functional and extremely dangerous.", opad);
139 info.
addPara(
"The station is assessed to be damaged, but still highly dangerous.", opad);
150 List<CampaignFleetAPI> stations =
new ArrayList<CampaignFleetAPI>();
156 if (!fleet.isStationMode())
continue;
159 boolean damaged = fleet.getMemoryWithoutUpdate().getBoolean(
"$damagedStation");
160 if ((difficulty == 7 || difficulty == 8) && damaged) {
162 }
else if (!damaged && difficulty > 8) {
171 return " - Remnant Nexus";
182 data.difficulty = difficulty;
188 data.fleet = picker.
pick();
189 if (data.
fleet ==
null)
return null;
192 if (data.
system ==
null)
return null;
203 return super.getMaxDifficulty();
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static SectorAPI getSector()
static boolean PERSON_BOUNTY_DEBUG_INFO
static final String LUDDIC_PATH
static final String HEGEMONY
static final String LUDDIC_CHURCH
static final String REMNANTS
void setRepChangesBasedOnDifficulty(CustomBountyData data, int difficulty)
void addFleetDescription(TooltipMakerAPI info, float width, float height, HubMissionWithBarEvent mission, CustomBountyData data)
String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data)
List< CampaignFleetAPI > getStations(HubMissionWithBarEvent mission, int difficulty)
void addIntelAssessment(TextPanelAPI text, HubMissionWithBarEvent mission, CustomBountyData data)
CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage)
float getFrequency(HubMissionWithBarEvent mission, int difficulty)
static float REMNANT_STATION_DAYS
static int getBaseBounty(int difficulty, float mult, BaseHubMission mission)
static float REMNANT_STATION_FREQ
static float REMNANT_STATION_MULT
static String ucFirst(String str)
static Color getHighlightColor()
void addAll(Collection< T > items)
FleetMemberAPI createFleetMember(FleetMemberType type, String variantOrWingId)
String getSpriteName(String category, String id)
FleetDataAPI getFleetData()
List< FleetMemberAPI > getMembersListCopy()
List< StarSystemAPI > getStarSystems()
StarSystemAPI getStarSystem()
TooltipMakerAPI beginTooltip()
void setCaptain(PersonAPI commander)