1package com.fs.starfarer.api.impl.campaign.intel.bases;
3import java.util.Random;
5import com.fs.starfarer.api.EveryFrameScript;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.FactionAPI;
8import com.fs.starfarer.api.campaign.StarSystemAPI;
9import com.fs.starfarer.api.impl.campaign.Tuning;
10import com.fs.starfarer.api.impl.campaign.ids.Factions;
11import com.fs.starfarer.api.impl.campaign.ids.Tags;
12import com.fs.starfarer.api.impl.campaign.intel.BaseEventManager;
13import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseIntel.PirateBaseTier;
14import com.fs.starfarer.api.util.Misc;
15import com.fs.starfarer.api.util.WeightedRandomPicker;
19 public static final String
KEY =
"$core_pirateBaseManager";
59 super.advance(amount);
66 protected Random
random =
new Random();
77 if (system ==
null)
return null;
86 if (factionId ==
null)
return null;
89 if (intel.
isDone()) intel =
null;
98 picker.
add(faction.getId(), 1f);
101 return picker.
pick();
112 days += Tuning.FAST_START_EXTRA_DAYS - 30f;
114 days += Tuning.FAST_START_EXTRA_DAYS + 60f;
125 if (timeFactor < 0) timeFactor = 0;
126 if (timeFactor > 1) timeFactor = 1;
146 picker.
add(PirateBaseTier.TIER_1_1MODULE, 10f);
147 picker.
add(PirateBaseTier.TIER_2_1MODULE, 10f);
148 }
else if (days < 720f) {
149 picker.
add(PirateBaseTier.TIER_2_1MODULE, 10f);
150 picker.
add(PirateBaseTier.TIER_3_2MODULE, 10f);
151 }
else if (days < 1080f) {
152 picker.
add(PirateBaseTier.TIER_3_2MODULE, 10f);
153 picker.
add(PirateBaseTier.TIER_4_3MODULE, 10f);
155 picker.
add(PirateBaseTier.TIER_3_2MODULE, 10f);
156 picker.
add(PirateBaseTier.TIER_4_3MODULE, 10f);
157 picker.
add(PirateBaseTier.TIER_5_3MODULE, 10f);
171 return picker.
pick();
176 return 120f + 60f * (float) Math.random();
179 if (system !=
null && system.
getCenter() !=
null) {
189 if (system.hasPulsar())
continue;
194 if (days < 45f)
continue;
212 if (weight <= 0f)
continue;
214 float usefulStuff = system.getCustomEntitiesWithTag(
Tags.
OBJECTIVE).size() +
216 if (usefulStuff <= 0)
continue;
221 float dist = system.getLocation().length();
232 far.
add(system, weight * usefulStuff * distMult);
234 picker.
add(system, weight * usefulStuff * distMult);
242 return picker.
pick();
static SettingsAPI getSettings()
static SectorAPI getSector()
static float DAYS_UNTIL_FULL_TIME_FACTOR
static int PIRATE_BASE_MAX_TIMEOUT_MONTHS
static float FAST_START_EXTRA_DAYS
static int PIRATE_BASE_MIN_TIMEOUT_MONTHS
static final String CUSTOM_MAKES_PIRATE_BASES
static final float CHECK_DAYS
PirateBaseTier pickTier()
float getUnadjustedDaysSinceStart()
static float genBaseUseTimeout()
void setNumDestroyed(int numDestroyed)
String pickPirateFaction()
StarSystemAPI pickSystemForPirateBase()
void advance(float amount)
float getDaysSinceStart()
static PirateBaseManager getInstance()
static String RECENTLY_USED_FOR_BASE
void setExtraDays(float extraDays)
float getStandardTimeFactor()
EveryFrameScript createEvent()
static void markRecentlyUsedForBase(StarSystemAPI system)
static final float CHECK_PROB
static List< MarketAPI > getMarketsInLocation(LocationAPI location, String factionId)
static boolean isFastStartExplorer()
static boolean hasPulsar(StarSystemAPI system)
static boolean isFastStart()
void addAll(Collection< T > items)
float getElapsedDaysSince(long timestamp)
List< StarSystemAPI > getStarSystems()
CampaignClockAPI getClock()
List< FactionAPI > getAllFactions()
MemoryAPI getMemoryWithoutUpdate()
MemoryAPI getMemoryWithoutUpdate()
SectorEntityToken getCenter()
void set(String key, Object value)