69 WeightedRandomPicker<String> typePicker =
new WeightedRandomPicker<String>(genRandom);
74 while (
item ==
null && !typePicker.isEmpty()) {
75 String type = typePicker.pick();
77 if (type.equals(Items.FIGHTER_BP)) {
78 WeightedRandomPicker<FighterWingSpecAPI> picker =
new WeightedRandomPicker<FighterWingSpecAPI>(genRandom);
80 if (!spec.hasTag(Items.TAG_RARE_BP))
continue;
81 if (spec.hasTag(Tags.NO_DROP))
continue;
82 if (
Global.
getSector().getPlayerFaction().knowsFighter(spec.getId()))
continue;
86 FighterWingSpecAPI pick = picker.pick();
88 item =
new SpecialItemData(type, pick.getId());
89 price = (int) pick.getBaseValue();
91 typePicker.remove(type);
93 }
else if (type.equals(Items.WEAPON_BP)) {
94 WeightedRandomPicker<WeaponSpecAPI> picker =
new WeightedRandomPicker<WeaponSpecAPI>(genRandom);
96 if (!spec.hasTag(Items.TAG_RARE_BP))
continue;
97 if (spec.hasTag(Tags.NO_DROP))
continue;
98 if (
Global.
getSector().getPlayerFaction().knowsWeapon(spec.getWeaponId()))
continue;
102 WeaponSpecAPI pick = picker.pick();
104 item =
new SpecialItemData(type, pick.getWeaponId());
105 price = (int) pick.getBaseValue();
107 typePicker.remove(type);
109 }
else if (type.equals(Items.SHIP_BP)) {
110 WeightedRandomPicker<ShipHullSpecAPI> picker =
new WeightedRandomPicker<ShipHullSpecAPI>(genRandom);
112 if (!spec.hasTag(Items.TAG_RARE_BP))
continue;
113 if (spec.hasTag(Tags.NO_DROP))
continue;
114 if (
Global.
getSector().getPlayerFaction().knowsShip(spec.getHullId()))
continue;
118 ShipHullSpecAPI pick = picker.pick();
120 item =
new SpecialItemData(type, pick.getHullId());
121 price = (int) pick.getBaseValue();
123 typePicker.remove(type);
132 price = getRoundNumber(
price * (1.5f + (1f - getRewardMultFraction())));
175 protected boolean create(MarketAPI createdAt,
boolean barEvent) {
179 setGiverRank(Ranks.CITIZEN);
180 setGiverPost(pickOne(Ranks.POST_AGENT, Ranks.POST_SMUGGLER, Ranks.POST_GANGSTER,
181 Ranks.POST_FENCE, Ranks.POST_CRIMINAL));
182 setGiverImportance(pickImportance());
183 setGiverFaction(Factions.PIRATES);
184 setGiverTags(Tags.CONTACT_UNDERWORLD);
185 findOrCreateGiver(createdAt,
false,
false);
188 PersonAPI person = getPerson();
189 if (person ==
null)
return false;
192 if (
item ==
null)
return false;
195 if (!setPersonMissionRef(person,
"$sitm_ref")) {
200 setGiverIsPotentialContactOnSuccess();
203 requireSystemInterestingAndNotCore();
204 preferSystemUnexplored();
205 preferSystemTags(ReqMode.NOT_ANY, Tags.THEME_DERELICT);
209 requirePlanetUnpopulated();
210 requirePlanetWithRuins();
211 requirePlanetNotFullySurveyed();
212 requirePlanetUnexploredRuins();
213 preferPlanetInDirectionOfOtherMissions();
218 requireEntityTags(ReqMode.ANY, Tags.SALVAGEABLE);
219 preferEntityInDirectionOfOtherMissions();
228 if (
system ==
null)
return false;
230 setStartingStage(Stage.GET_ITEM);
231 setSuccessStage(Stage.COMPLETED);
233 addTag(Tags.INTEL_EXPLORATION);
237 int numScav = genRandom.nextInt(3);
238 if (veryValuable) numScav += 2;
240 for (
int i = 0; i < numScav; i++) {
241 beginWithinHyperspaceRangeTrigger(
system, 3f,
false, Stage.GET_ITEM);
242 triggerCreateFleet(FleetSize.LARGE, FleetQuality.DEFAULT, Factions.SCAVENGERS, FleetTypes.SCAVENGER_MEDIUM,
system);
243 triggerAutoAdjustFleetStrengthMajor();
244 triggerSetFleetFaction(Factions.INDEPENDENT);
246 triggerMakeLowRepImpact();
248 triggerSpawnFleetNear(
system.getCenter(),
null,
"$sitm_ref");
249 triggerFleetSetTravelActionText(
"exploring system");
250 triggerFleetSetPatrolActionText(
"scanning local volume");
251 triggerOrderFleetPatrol(
system,
true, Tags.SALVAGEABLE, Tags.PLANET);
252 triggerFleetSetWarnAttack(
"SITMScavWarning",
"SITMScavAttack", Stage.GET_ITEM);
257 if (veryValuable && rollProbability(
PROB_MERC)) {
258 beginWithinHyperspaceRangeTrigger(
system, 3f,
false, Stage.GET_ITEM);
259 triggerCreateFleet(FleetSize.VERY_LARGE, FleetQuality.VERY_HIGH, Factions.MERCENARY, FleetTypes.PATROL_LARGE,
system);
260 triggerSetFleetFaction(Factions.INDEPENDENT);
261 triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
262 triggerAutoAdjustFleetStrengthMajor();
263 triggerMakeLowRepImpact();
264 triggerFleetAllowLongPursuit();
265 triggerSetFleetAlwaysPursue();
266 triggerSpawnFleetNear(
system.getCenter(),
null,
"$sitm_ref");
267 triggerOrderFleetPatrol(
system,
true, Tags.JUMP_POINT);
268 triggerFleetSetWarnAttack(
"SITMMercWarning",
"SITMMercAttack", Stage.GET_ITEM);
299 super.notifyEnding();
305 PersonAPI person = getPerson();
306 if (person ==
null || person.getMarket() ==
null)
return;
307 String patrolFaction = person.getMarket().getFactionId();
308 if (patrolFaction.equals(person.getFaction().getId()) ||
309 Misc.isPirateFaction(person.getMarket().getFaction())) {
321 e.triggerSetFleetGenericHailPermanent(
"SITMPatherHail");
322 e.triggerFleetPatherNoDefaultTithe();