91 List<FactionAPI> result =
new ArrayList<FactionAPI>();
92 for (
int i = 0; i < factions.size(); i++) {
93 FactionAPI faction = factions.get(i);
94 if (!faction.getCustom().optBoolean(Factions.CUSTOM_ENGAGES_IN_HOSTILITIES)) {
98 if (faction.isPlayerFaction())
continue;
100 if (checkNumMarkets) {
101 int count = Misc.getFactionMarkets(faction).size();
102 if (count <= 0)
continue;
161 List<FactionAPI> factions =
new ArrayList<FactionAPI>();
162 Map<FactionAPI, Integer> marketCounts =
new HashMap<FactionAPI, Integer>();
165 int count = Misc.getFactionMarkets(faction).size();
166 if (count <= 0)
continue;
167 marketCounts.put(faction, count);
169 factions.add(faction);
172 WeightedRandomPicker<FactionAPI> picker =
new WeightedRandomPicker<FactionAPI>(
random);
174 boolean weighCommissionedMore =
false;
175 FactionAPI commission = Misc.getCommissionFaction();
177 weighCommissionedMore =
true;
180 for (FactionAPI faction : factions) {
182 if (commission == faction && weighCommissionedMore) {
185 picker.add(faction, w);
188 FactionAPI one = picker.pick();
189 if (one ==
null)
return null;
192 for (FactionAPI faction : factions) {
193 if (faction == one)
continue;
194 if (faction.isHostileTo(one))
continue;
195 if (faction.isAtWorst(one, RepLevel.COOPERATIVE))
continue;
200 float w = marketCounts.get(faction);
201 picker.add(faction, w);
204 FactionAPI two = picker.pick();
205 if (two ==
null)
return null;
207 return new Pair<FactionAPI, FactionAPI>(one, two);