50 public static CampaignFleetAPI
createPatrol(PatrolType type, FactionAPI faction,
float stability,
float qf, MarketAPI market) {
51 String fleetType = FleetTypes.PATROL_SMALL;
54 fleetType = FleetTypes.PATROL_SMALL;
57 fleetType = FleetTypes.PATROL_MEDIUM;
60 fleetType = FleetTypes.PATROL_LARGE;
63 CampaignFleetAPI fleet =
createEmptyFleet(faction.getId(), fleetType, market);
67 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
68 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
69 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
70 if (stability > (
float) Math.random() * 20f) {
71 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
73 if (stability > (
float) Math.random() * 20f) {
74 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
78 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
79 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
81 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
82 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
83 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
85 if (stability > (
float) Math.random() * 20f) {
86 faction.pickShipAndAddToFleet(ShipRoles.FREIGHTER_SMALL, ShipPickParams.all(), fleet);
88 if (stability > (
float) Math.random() * 20f) {
89 faction.pickShipAndAddToFleet(ShipRoles.TANKER_SMALL, ShipPickParams.all(), fleet);
91 if (stability > (
float) Math.random() * 20f) {
92 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
94 if (stability > (
float) Math.random() * 20f) {
95 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
97 if (stability > (
float) Math.random() * 20f) {
98 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
102 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
104 if ((
float) Math.random() > 0.5f) {
105 faction.pickShipAndAddToFleet(ShipRoles.CARRIER_MEDIUM, ShipPickParams.all(), fleet);
107 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
108 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_LARGE, ShipPickParams.all(), fleet);
111 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
112 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
113 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_LARGE, ShipPickParams.all(), fleet);
115 faction.pickShipAndAddToFleet(ShipRoles.FREIGHTER_MEDIUM, ShipPickParams.all(), fleet);
116 faction.pickShipAndAddToFleet(ShipRoles.TANKER_MEDIUM, ShipPickParams.all(), fleet);
118 if (stability > (
float) Math.random() * 20f) {
119 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
121 if (stability > (
float) Math.random() * 20f) {
122 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
124 if (stability > (
float) Math.random() * 20f) {
125 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_LARGE, ShipPickParams.all(), fleet);
130 setAIMode(fleet,
true);
152 public static CampaignFleetAPI
createMerc(MarketAPI market,
float qf, MercType type, String factionIdForShipPicking) {
153 float stability = market.getStabilityValue();
155 String factionId = Factions.INDEPENDENT;
156 FactionAPI faction =
Global.
getSector().getFaction(factionIdForShipPicking);
162 CampaignFleetAPI fleet =
createEmptyFleet(factionIdForShipPicking, type.fleetType, market);
165 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
166 if ((
float) Math.random() > 0.5f) {
167 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
169 if (stability < (
float) Math.random() * 20f) {
170 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
174 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
175 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
176 if (stability < (
float) Math.random() * 20f) {
177 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
179 if (stability < (
float) Math.random() * 20f) {
180 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
182 if (stability < (
float) Math.random() * 20f) {
183 if ((
float) Math.random() > 0.5f) {
184 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_FREIGHTER_MEDIUM, ShipPickParams.all(), fleet);
186 faction.pickShipAndAddToFleet(ShipRoles.FREIGHTER_MEDIUM, ShipPickParams.all(), fleet);
191 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
192 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
193 if ((
float) Math.random() > 0.5f) {
194 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
196 if (stability < (
float) Math.random() * 20f) {
197 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
199 if (stability < (
float) Math.random() * 20f) {
200 faction.pickShipAndAddToFleet(ShipRoles.FAST_ATTACK, ShipPickParams.all(), fleet);
202 if (stability < (
float) Math.random() * 20f) {
203 faction.pickShipAndAddToFleet(ShipRoles.TANKER_SMALL, ShipPickParams.all(), fleet);
207 if ((
float) Math.random() > 0.33f) {
208 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
209 faction.pickShipAndAddToFleet(ShipRoles.ESCORT_SMALL, ShipPickParams.all(), fleet);
210 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
211 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
213 faction.pickShipAndAddToFleet(ShipRoles.CARRIER_SMALL, ShipPickParams.all(), fleet);
214 if (stability < (
float) Math.random() * 20f) {
215 faction.pickShipAndAddToFleet(ShipRoles.CARRIER_SMALL, ShipPickParams.all(), fleet);
218 if (stability < (
float) Math.random() * 20f) {
219 faction.pickShipAndAddToFleet(ShipRoles.ESCORT_SMALL, ShipPickParams.all(), fleet);
221 if (stability < (
float) Math.random() * 20f) {
222 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
224 if (stability < (
float) Math.random() * 20f) {
225 faction.pickShipAndAddToFleet(ShipRoles.ESCORT_SMALL, ShipPickParams.all(), fleet);
227 if (stability < (
float) Math.random() * 20f) {
228 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
230 if (stability < (
float) Math.random() * 20f) {
231 faction.pickShipAndAddToFleet(ShipRoles.FREIGHTER_MEDIUM, ShipPickParams.all(), fleet);
233 if (stability < (
float) Math.random() * 20f) {
234 faction.pickShipAndAddToFleet(ShipRoles.TANKER_SMALL, ShipPickParams.all(), fleet);
238 if ((
float) Math.random() > 0.33f) {
239 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
240 faction.pickShipAndAddToFleet(ShipRoles.ESCORT_SMALL, ShipPickParams.all(), fleet);
241 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
242 faction.pickShipAndAddToFleet(ShipRoles.ESCORT_MEDIUM, ShipPickParams.all(), fleet);
243 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_LARGE, ShipPickParams.all(), fleet);
245 faction.pickShipAndAddToFleet(ShipRoles.CARRIER_MEDIUM, ShipPickParams.all(), fleet);
246 if (stability < (
float) Math.random() * 20f) {
247 faction.pickShipAndAddToFleet(ShipRoles.CARRIER_SMALL, ShipPickParams.all(), fleet);
250 if (stability < (
float) Math.random() * 20f) {
251 faction.pickShipAndAddToFleet(ShipRoles.ESCORT_MEDIUM, ShipPickParams.all(), fleet);
253 if (stability < (
float) Math.random() * 20f) {
254 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_LARGE, ShipPickParams.all(), fleet);
256 if (stability < (
float) Math.random() * 20f) {
257 faction.pickShipAndAddToFleet(ShipRoles.ESCORT_SMALL, ShipPickParams.all(), fleet);
259 if (stability < (
float) Math.random() * 20f) {
260 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_MEDIUM, ShipPickParams.all(), fleet);
262 if (stability < (
float) Math.random() * 20f) {
263 faction.pickShipAndAddToFleet(ShipRoles.FREIGHTER_MEDIUM, ShipPickParams.all(), fleet);
265 if (stability < (
float) Math.random() * 20f) {
266 faction.pickShipAndAddToFleet(ShipRoles.TANKER_MEDIUM, ShipPickParams.all(), fleet);
271 setAIMode(fleet,
true);
331 public static CampaignFleetAPI
createGenericFleet(String factionId, String name,
float qualityFactor,
int maxFP) {
335 WeightedRandomPicker<String> main =
new WeightedRandomPicker<String>();
337 main.add(ShipRoles.COMBAT_SMALL, 5);
338 main.add(ShipRoles.COMBAT_SMALL, 5);
340 main.add(ShipRoles.ESCORT_SMALL, 6);
341 main.add(ShipRoles.COMBAT_SMALL, 20);
342 main.add(ShipRoles.FAST_ATTACK, 10);
345 main.add(ShipRoles.COMBAT_MEDIUM, 10);
346 main.add(ShipRoles.ESCORT_MEDIUM, 10);
349 main.add(ShipRoles.COMBAT_LARGE, 5);
350 main.add(ShipRoles.COMBAT_SMALL, 5);
353 main.add(ShipRoles.COMBAT_LARGE, 5);
354 main.add(ShipRoles.COMBAT_CAPITAL, 3);
359 while (fleet.getFleetPoints() < maxFP * 0.75f) {
360 String role = main.pick();
361 boolean added = faction.pickShipAndAddToFleet(role, ShipPickParams.all(), fleet) > 0;
366 if (failCount >= 10)
break;
371 if (fleet.getFlagship() ==
null) {
372 faction.pickShipAndAddToFleet(ShipRoles.COMBAT_SMALL, ShipPickParams.all(), fleet);
373 if (fleet.getFlagship() ==
null) {
375 FleetMemberAPI flagship = f.
createFleetMember(FleetMemberType.SHIP,
"tempest_Attack");
376 fleet.getFleetData().addFleetMember(flagship);
381 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
382 if (member.isFighterWing()) {
383 fighterFP += member.getFleetPointCost();
387 float pointsLeft = maxFP - fleet.getFleetPoints();
388 float carrierPoints = Math.min(pointsLeft, fighterFP * 0.33f);
390 WeightedRandomPicker<String> carriers =
new WeightedRandomPicker<String>();
391 if (fighterFP >= 10) {
392 carriers.add(ShipRoles.CARRIER_SMALL, 5);
394 if (fighterFP >= 30) {
395 carriers.add(ShipRoles.CARRIER_MEDIUM, 5);
397 if (fighterFP >= 50) {
398 carriers.add(ShipRoles.CARRIER_LARGE, 5);
403 int startingFP = fleet.getFleetPoints();
404 while (fleet.getFleetPoints() < startingFP + carrierPoints) {
405 String role = carriers.pick();
406 boolean added = faction.pickShipAndAddToFleet(role, ShipPickParams.all(), fleet) > 0;
411 if (failCount >= 10)
break;
417 while (fleet.getFleetPoints() < maxFP) {
418 String role = main.pick();
419 boolean added = faction.pickShipAndAddToFleet(role, ShipPickParams.all(), fleet) > 0;
424 if (failCount >= 10)
break;
434 public static void addGenericCombatShips(CampaignFleetAPI fleet, FactionAPI faction, MarketAPI market,
int extraFP) {
435 float qualityFactor = market.getShipQualityFactor();
437 WeightedRandomPicker<String> main =
new WeightedRandomPicker<String>();
439 main.add(ShipRoles.COMBAT_SMALL, 5);
440 main.add(ShipRoles.COMBAT_SMALL, 5);
442 main.add(ShipRoles.ESCORT_SMALL, 6);
443 main.add(ShipRoles.COMBAT_SMALL, 20);
444 main.add(ShipRoles.FAST_ATTACK, 10);
447 main.add(ShipRoles.COMBAT_MEDIUM, 10);
448 main.add(ShipRoles.ESCORT_MEDIUM, 10);
451 main.add(ShipRoles.COMBAT_LARGE, 5);
452 main.add(ShipRoles.COMBAT_SMALL, 5);
455 main.add(ShipRoles.COMBAT_LARGE, 5);
456 main.add(ShipRoles.COMBAT_CAPITAL, 3);
461 int starting = fleet.getFleetPoints();
462 while (fleet.getFleetPoints() < starting + extraFP) {
463 String role = main.pick();
464 boolean added = faction.pickShipAndAddToFleet(role, ShipPickParams.all(), fleet) > 0;
469 if (failCount >= 10)
break;