1package com.fs.starfarer.api.impl.campaign.procgen.themes;
3import java.util.ArrayList;
4import java.util.Collections;
6import java.util.Random;
8import com.fs.starfarer.api.campaign.AICoreOfficerPlugin;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.FactionAPI;
11import com.fs.starfarer.api.campaign.FactionDoctrineAPI;
12import com.fs.starfarer.api.campaign.GenericPluginManagerAPI;
13import com.fs.starfarer.api.characters.MutableCharacterStatsAPI;
14import com.fs.starfarer.api.characters.PersonAPI;
15import com.fs.starfarer.api.fleet.FleetMemberAPI;
16import com.fs.starfarer.api.impl.campaign.fleets.BaseGenerateFleetOfficersPlugin;
17import com.fs.starfarer.api.impl.campaign.fleets.FleetParamsV3;
18import com.fs.starfarer.api.impl.campaign.ids.Commodities;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.impl.campaign.ids.Ranks;
21import com.fs.starfarer.api.util.Misc;
22import com.fs.starfarer.api.util.WeightedRandomPicker;
31 if (!(params instanceof GenerateFleetOfficersPickData))
return -1;
33 GenerateFleetOfficersPickData data = (GenerateFleetOfficersPickData) params;
34 if (data.params !=
null && !data.params.
withOfficers)
return -1;
46 if (members.isEmpty())
return;
51 if (member.isFighterWing())
continue;
54 member.setCaptain(person);
55 withOfficers.
add(member, (
float) Math.pow(member.getFleetPointCost(), 5f));
61 if (flagship !=
null) {
73 if (random ==
null) random =
new Random();
74 if (numSkills <= 0)
return;
84 if (skills.isEmpty())
return;
87 Collections.shuffle(skills, random);
94 if (debug) System.out.println(
"Generating commander skills, person level " + stats.
getLevel() +
", skills: " + numSkills);
96 for (String skillId : skills) {
97 if (debug) System.out.println(
"Selected skill: [" + skillId +
"]");
100 if (picks >= numSkills) {
104 if (debug) System.out.println(
"Done generating commander skills\n");
FactionDoctrineAPI doctrineOverride
static final String OMEGA_CORE
static final String OMEGA
static String SPACE_COMMANDER
static String POST_FLEET_COMMANDER
static void addCommanderSkills(PersonAPI commander, CampaignFleetAPI fleet, FleetParamsV3 params, int numSkills, Random random)
void addCommanderAndOfficers(CampaignFleetAPI fleet, FleetParamsV3 params, Random random)
int getHandlingPriority(Object params)
OmegaOfficerGeneratorPlugin()
static AICoreOfficerPlugin getAICoreOfficerPlugin(String commodityId)
PersonAPI createPerson(String aiCoreId, String factionId, Random random)
void setCommander(PersonAPI commander)
FleetDataAPI getFleetData()
FactionDoctrineAPI getDoctrine()
float getCommanderSkillsShuffleProbability()
List< String > getCommanderSkills()
void setFlagship(FleetMemberAPI flagship)
List< FleetMemberAPI > getMembersListCopy()
void setSkillLevel(String id, float level)
void refreshCharacterStatsEffects()
void setSkipRefresh(boolean skipRefresh)
void setRankId(String rank)
MutableCharacterStatsAPI getStats()
void setPostId(String postId)