1package com.fs.starfarer.api.impl.campaign.intel.bar.events.historian;
4import java.util.Random;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.PlanetAPI;
8import com.fs.starfarer.api.campaign.SectorEntityToken;
9import com.fs.starfarer.api.campaign.StarSystemAPI;
10import com.fs.starfarer.api.impl.campaign.ids.Entities;
11import com.fs.starfarer.api.impl.campaign.ids.Factions;
12import com.fs.starfarer.api.impl.campaign.ids.Tags;
13import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.HistorianData.HistorianOffer;
14import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.HistorianData.HistorianOfferCreator;
15import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator;
16import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.AddedEntity;
17import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.EntityLocation;
18import com.fs.starfarer.api.util.Misc;
19import com.fs.starfarer.api.util.WeightedRandomPicker;
25 public HistorianOffer
createOffer(Random random, List<HistorianOffer> soFar) {
43 public SectorEntityToken
pickEntity(Random random,
boolean allowDerelict) {
44 WeightedRandomPicker<SectorEntityToken> picker =
new WeightedRandomPicker<SectorEntityToken>(random);
46 if (system.hasTag(Tags.THEME_CORE_POPULATED))
continue;
47 if (!allowDerelict && system.hasTag(Tags.THEME_DERELICT))
continue;
49 if (system.hasTag(Tags.THEME_DERELICT) ||
50 system.hasTag(Tags.THEME_RUINS) ||
51 system.hasTag(Tags.THEME_REMNANT)) {
53 for (SectorEntityToken entity : system.getEntitiesWithTag(Tags.SALVAGEABLE)) {
57 if (entity.hasTag(Tags.EXPIRES))
continue;
58 if (entity.hasTag(Tags.NOT_RANDOM_MISSION_TARGET))
continue;
59 if (entity.getCircularOrbitRadius() > 10000f)
continue;
60 picker.add(entity, w);
69 WeightedRandomPicker<PlanetAPI> picker =
new WeightedRandomPicker<PlanetAPI>(random);
71 if (system.hasTag(Tags.THEME_CORE_POPULATED))
continue;
73 if (!system.hasTag(Tags.THEME_INTERESTING) &&
74 !system.hasTag(Tags.THEME_INTERESTING_MINOR))
continue;
76 for (PlanetAPI planet : system.getPlanets()) {
77 if (planet.isStar())
continue;
79 if (Misc.hasUnexploredRuins(planet.getMarket())) {
81 picker.add(planet, w);
89 WeightedRandomPicker<StarSystemAPI> picker =
new WeightedRandomPicker<StarSystemAPI>(random);
91 if (system.hasTag(Tags.THEME_CORE_POPULATED))
continue;
92 if (system.hasTag(Tags.THEME_REMNANT_MAIN))
continue;
93 if (system.hasTag(Tags.THEME_REMNANT_RESURGENT))
continue;
95 if (!system.hasTag(Tags.THEME_INTERESTING) &&
96 !system.hasTag(Tags.THEME_INTERESTING_MINOR))
continue;
98 float sinceVisit =
Global.
getSector().getClock().getElapsedDaysSince(system.getLastPlayerVisitTimestamp());
99 if (sinceVisit < 360)
continue;
104 StarSystemAPI system = picker.pick();
105 if (system ==
null)
return null;
107 EntityLocation loc = BaseThemeGenerator.pickHiddenLocationNotNearStar(random, system, 100f,
null);
108 if (loc ==
null)
return null;
111 AddedEntity added = BaseThemeGenerator.addEntity(random, system, loc, Entities.EQUIPMENT_CACHE, Factions.NEUTRAL);
113 if (added ==
null || added.entity ==
null)
return null;
122 added.entity.addTag(Tags.EXPIRES);
static SectorAPI getSector()
SectorEntityToken pickEntity(Random random, boolean allowDerelict)
HistorianOffer createOffer(Random random, List< HistorianOffer > soFar)
PlanetAPI pickUnexploredRuins(Random random)
static SectorEntityToken createEntity(Random random)
void notifyAccepted(HistorianOffer offer)
String getOfferId(BaseHistorianOffer offer)
void setFrequency(float frequency)