31 if (!(params instanceof GenerateFleetOfficersPickData))
return -1;
33 GenerateFleetOfficersPickData data = (GenerateFleetOfficersPickData) params;
34 if (data.params !=
null && !data.params.withOfficers)
return -1;
35 if (data.fleet ==
null || !data.fleet.getFaction().getId().equals(Factions.OMEGA))
return -1;
36 return GenericPluginManagerAPI.CORE_SUBSET;
42 if (random ==
null) random = Misc.random;
43 FactionAPI faction = fleet.getFaction();
45 List<FleetMemberAPI> members = fleet.getFleetData().getMembersListCopy();
46 if (members.isEmpty())
return;
48 WeightedRandomPicker<FleetMemberAPI> withOfficers =
new WeightedRandomPicker<FleetMemberAPI>(random);
49 AICoreOfficerPlugin plugin = Misc.getAICoreOfficerPlugin(Commodities.OMEGA_CORE);
50 for (FleetMemberAPI member : members) {
51 if (member.isFighterWing())
continue;
53 PersonAPI person = plugin.createPerson(Commodities.OMEGA_CORE, faction.getId(), random);
54 member.setCaptain(person);
55 withOfficers.add(member, (
float) Math.pow(member.getFleetPointCost(), 5f));
60 FleetMemberAPI flagship = withOfficers.pick();
61 if (flagship !=
null) {
62 PersonAPI commander = flagship.getCaptain();
63 commander.setRankId(Ranks.SPACE_COMMANDER);
64 commander.setPostId(Ranks.POST_FLEET_COMMANDER);
65 fleet.setCommander(commander);
66 fleet.getFleetData().setFlagship(flagship);
72 public static void addCommanderSkills(PersonAPI commander, CampaignFleetAPI fleet, FleetParamsV3 params,
int numSkills, Random random) {
73 if (random ==
null) random =
new Random();
74 if (numSkills <= 0)
return;
76 MutableCharacterStatsAPI stats = commander.getStats();
78 FactionDoctrineAPI doctrine = fleet.getFaction().getDoctrine();
79 if (params !=
null && params.doctrineOverride !=
null) {
80 doctrine = params.doctrineOverride;
83 List<String> skills =
new ArrayList<String>(doctrine.getCommanderSkills());
84 if (skills.isEmpty())
return;
86 if (random.nextFloat() < doctrine.getCommanderSkillsShuffleProbability()) {
87 Collections.shuffle(skills, random);
90 stats.setSkipRefresh(
true);
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 +
"]");
98 stats.setSkillLevel(skillId, 1);
100 if (picks >= numSkills) {
104 if (debug) System.out.println(
"Done generating commander skills\n");
106 stats.setSkipRefresh(
false);
107 stats.refreshCharacterStatsEffects();