38 if (!
Global.
getSector().getCurrentLocation().isHyperspace())
return null;
44 Vector2f loc =
findHyperspaceArea(pf.getLocation(), 3000, 4000, 1000, random,
true, 3000);
45 if (loc ==
null)
return null;
59 hyper.addEntity(other);
60 other.setLocation(loc.x, loc.y);
61 other.addScript(
new AutoDespawnScript(other));
63 boolean guideToTarget = manager.
getRandom().nextBoolean();
65 List<SensorGhost> result =
new ArrayList<SensorGhost>();
68 hyper.removeEntity(other);
86 PirateBaseIntel intel = BaseEPEncounterCreator.getClosestPirateBase(locInHyper);
87 float f1 = BaseEPEncounterCreator.getPirateBaseProximityFactor(intel, locInHyper);
89 LuddicPathBaseIntel intel2 = BaseEPEncounterCreator.getClosestLuddicPathBase(locInHyper);
90 float f2 = BaseEPEncounterCreator.getLuddicPathBaseProximityFactor(intel2, locInHyper);
92 float result = Math.max(f1, f2);
94 StarSystemAPI ruins = BaseEPEncounterCreator.getClosestSystemWithRuins(locInHyper);
95 float f3 = BaseEPEncounterCreator.getRuinsProximityFactor(ruins, locInHyper);
97 result = Math.max(result, f3);
99 WeightedRandomPicker<OtherFleetType> picker =
new WeightedRandomPicker<OtherFleetType>(random);
100 picker.add(OtherFleetType.PIRATE, f1 + 0.1f);
101 picker.add(OtherFleetType.LUDDIC_PATH, f2 + 0.05f);
102 picker.add(OtherFleetType.MERCENARY, (f1 + f2) * 0.25f + 0.01f);
103 picker.add(OtherFleetType.NOTHING, 1f);
104 OtherFleetType type = picker.pick();
105 if (type ==
null)
return null;
107 CampaignFleetAPI fleet =
null;
108 FleetCreatorMission m =
new FleetCreatorMission(random);
111 if (type == OtherFleetType.PIRATE) {
112 String factionId = Factions.PIRATES;
113 if (intel !=
null && intel.getMarket() !=
null) factionId = intel.getMarket().getFactionId();
117 difficulty += (int) Math.round(f1 * 2f);
119 switch (intel.getTier()) {
120 case TIER_1_1MODULE: difficulty += 2;
break;
121 case TIER_2_1MODULE: difficulty += 2;
break;
122 case TIER_3_2MODULE: difficulty += 3;
break;
123 case TIER_4_3MODULE: difficulty += 4;
break;
124 case TIER_5_3MODULE: difficulty += 5;
break;
127 difficulty += random.nextInt(4);
130 difficulty += random.nextInt(7);
132 Vector2f loc = locInHyper;
133 m.createStandardFleet(difficulty, factionId, loc);
134 m.triggerSetStandardAggroPirateFlags();
135 m.triggerFleetAllowLongPursuit();
136 if (intel !=
null && intel.getMarket() !=
null) {
137 m.triggerSetFleetMemoryValue(MemFlags.MEMORY_KEY_SOURCE_MARKET, intel.getMarket().getId());
139 fleet = m.createFleet();
140 }
else if (type == OtherFleetType.LUDDIC_PATH) {
142 if (intel2 !=
null) {
143 difficulty += (int) Math.round(f2 * 2f);
144 if (intel2.isLarge()) {
149 difficulty += random.nextInt(4);
152 difficulty += random.nextInt(7);
155 Vector2f loc = locInHyper;
156 m.createStandardFleet(difficulty, Factions.LUDDIC_PATH, loc);
157 m.triggerSetStandardAggroPirateFlags();
158 m.triggerFleetAllowLongPursuit();
159 m.triggerFleetPatherNoDefaultTithe();
160 if (intel2 !=
null && intel2.getMarket() !=
null) {
161 m.triggerSetFleetMemoryValue(MemFlags.MEMORY_KEY_SOURCE_MARKET, intel2.getMarket().getId());
164 fleet = m.createFleet();
165 }
else if (type == OtherFleetType.MERCENARY) {
167 float f = Math.max(f1, f2);
168 difficulty += (int) Math.round(f * 3f);
169 difficulty += random.nextInt(5);
171 Vector2f loc = locInHyper;
172 m.createQualityFleet(difficulty, Factions.MERCENARY, loc);
173 m.triggerFleetAllowLongPursuit();
174 m.triggerSetFleetFaction(Factions.INDEPENDENT);
175 m.triggerMakeNoRepImpact();
176 m.triggerFleetSetAllWeapons();
178 fleet = m.createFleet();
179 }
else if (type == OtherFleetType.NOTHING) {
183 if (fleet ==
null)
return null;
184 fleet.removeScriptsOfClass(MissionFleetAutoDespawn.class);
185 fleet.addScript(
new MissionFleetAutoDespawn(
null, fleet));