Is there some hidden factor controlling the number of officers a fleet can have, that I'm failing to notice in FleetFactoryV3?
I set the doctrines of the major factions to 5-1-1 (same as Hegemony), started a new game, and ran the following code:
Spoiler
public static void run(String factionId) {
final FactionAPI faction = Global.getSector().getFaction(factionId);
int numOfficers = 0, numShips = 0, sumLevel = 0, sumFP = 0;
int numFleets = 100;
for (int i=0; i<numFleets; i++) {
CampaignFleetAPI fleet = createFleet(faction, 100);
sumFP += fleet.getFleetPoints();
for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy())
{
numShips++;
if (member.getCaptain().isDefault())
continue;
numOfficers++;
sumLevel += member.getCaptain().getStats().getLevel();
}
}
FactionDoctrineAPI doctrine = faction.getDoctrine();
String str = String.format("Generated %s fleets for faction %s, doctrine %s-%s-%s", numFleets,
faction.getDisplayName(), doctrine.getOfficerQuality(), doctrine.getShipQuality(),
doctrine.getNumShips());
Console.showMessage(str);
Console.showMessage(" Number of officers: " + numOfficers);
Console.showMessage(" FP sum: " + sumFP);
Console.showMessage(" Avg. officers per fleet: " + String.format("%.2f", (float)numOfficers/numFleets));
Console.showMessage(" Officers per ship: " + String.format("%.2f", (float)numOfficers/numShips));
Console.showMessage(" Average officer level: " + String.format("%.2f", (float)sumLevel/numOfficers));
}
public static CampaignFleetAPI createFleet(FactionAPI faction, int fp)
{
final int totalFP = (int)(fp * InvasionFleetManager.getFactionDoctrineFleetSizeMult(faction));
final FleetParamsV3 params = new FleetParamsV3(
Global.getSector().getPlayerFleet().getLocationInHyperspace(),
faction.getId(), // Faction ID
null, // Quality override (null disables)
FleetTypes.PATROL_LARGE, // Fleet type
totalFP, // Combat FP
0, // Freighter FP
0, // Tanker FP
0, // Transport FP
0, // Liner FP
0, // Utility FP
0f); // Quality bonus
params.ignoreMarketFleetSizeMult = true;
final CampaignFleetAPI fleet = FleetFactoryV3.createFleet(params);
// Update combat readiness
fleet.getFleetData().sort();
fleet.forceSync();
for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy())
{
final RepairTrackerAPI repairs = member.getRepairTracker();
repairs.setCR(repairs.getMaxCR());
}
return fleet;
}
Result:
Generated 100 fleets for faction Hegemony, doctrine 5-1-1
Number of officers: 847
FP sum: 9888
Avg. officers per fleet: 8.47
Officers per ship: 0.82
Average officer level: 15.00
Generated 100 fleets for faction Luddic Church, doctrine 5-1-1
Number of officers: 404
FP sum: 9921
Avg. officers per fleet: 4.04
Officers per ship: 0.32
Average officer level: 15.00
Generated 100 fleets for faction Persean League, doctrine 5-1-1
Number of officers: 910
FP sum: 9922
Avg. officers per fleet: 9.10
Officers per ship: 0.76
Average officer level: 14.95
Generated 100 fleets for faction Sindrian Diktat, doctrine 5-1-1
Number of officers: 876
FP sum: 9844
Avg. officers per fleet: 8.76
Officers per ship: 0.87
Average officer level: 15.01
Generated 100 fleets for faction Tri-Tachyon, doctrine 5-1-1
Number of officers: 310
FP sum: 9845
Avg. officers per fleet: 3.10
Officers per ship: 0.39
Average officer level: 15.01
Why are Luddic Church and TT getting less than half as many officers as the other factions, but at the same level?
...wait, I see something. The other factions have Officer Management as the first skill in their doctrine commanderSkills array, while Church and TT have something else. Is that what's causing it?