1package com.fs.starfarer.api.impl.campaign.econ.impl;
4import java.util.ArrayList;
6import java.util.Random;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CargoAPI;
10import com.fs.starfarer.api.campaign.CargoStackAPI;
11import com.fs.starfarer.api.campaign.FactionAPI;
12import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
13import com.fs.starfarer.api.campaign.econ.MarketAPI;
14import com.fs.starfarer.api.campaign.econ.MarketImmigrationModifier;
15import com.fs.starfarer.api.campaign.impl.items.BlueprintProviderItem;
16import com.fs.starfarer.api.campaign.impl.items.ModSpecItemPlugin;
17import com.fs.starfarer.api.campaign.rules.MemoryAPI;
18import com.fs.starfarer.api.impl.campaign.ids.Conditions;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.impl.campaign.ids.Stats;
21import com.fs.starfarer.api.impl.campaign.population.PopulationComposition;
22import com.fs.starfarer.api.impl.campaign.procgen.SalvageEntityGenDataSpec.DropData;
23import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageEntity;
24import com.fs.starfarer.api.ui.TooltipMakerAPI;
25import com.fs.starfarer.api.util.Misc;
55 size = Math.min(size, max);
84 if (!super.isAvailableToBuild())
return false;
96 if (!super.isAvailableToBuild())
return super.getUnavailableReason();
97 return "Requires ruins";
116 return base + super.getPatherInterest();
127 tooltip.
addPara(
"In addition to extracting basic resources, " +
128 "there's also a chance to find blueprints and other rare items. Anything " +
129 "found will be delivered to the designated production gathering point.", opad);
131 boolean hasRuins =
true;
133 tooltip.
addPara(
"The vast ruins here offer incredible potential for valuable finds.", opad);
135 tooltip.
addPara(
"The extensive ruins here offer the opportunity for valuable finds.", opad);
137 tooltip.
addPara(
"The widespread ruins here offer a solid chance of finding something valuable, given time.", opad);
139 tooltip.
addPara(
"The scattered ruins here offer only a slight chance of finding something valuable, though one never knows what might be located given enough time.", opad);
147 tooltip.
addPara(
"These ruins are largely untapped.", opad);
148 }
else if (mult >= .5f) {
149 tooltip.
addPara(
"These ruins have been stripped of easy pickings, but the more difficult areas remain, filled with promise.", opad);
150 }
else if (mult >= 0.25f) {
151 tooltip.
addPara(
"These ruins have been combed through, though the chance for a few new finds still remains.", opad);
153 tooltip.
addPara(
"These ruins have been comprehensively combed over multiple times, and there is little chance of a new valuable find.", opad);
210 List<DropData> dropRandom =
new ArrayList<DropData>();
211 List<DropData> dropValue =
new ArrayList<DropData>();
213 DropData d =
new DropData();
215 d.group =
"blueprints_low";
221 d.group =
"rare_tech_low";
227 d.group =
"ai_cores3";
233 d.group =
"any_hullmod_low";
238 d.group =
"weapons2";
248 float num = base * (5f + random.nextFloat() * 2f);
249 if (num < 1) num = 1;
252 d.chances = (int) Math.round(num);
253 d.group =
"techmining_first_find";
265 for (String
id : list) {
272 for (String
id : list) {
279 for (String
id : list) {
286 for (String
id : list) {
324 String pre =
"Alpha-level AI core currently assigned. ";
325 if (mode == AICoreDescriptionMode.MANAGE_CORE_DIALOG_LIST || mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP) {
326 pre =
"Alpha-level AI core. ";
329 String aStr =
"" + (int)Math.round(a * 100f) +
"%";
331 if (mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP) {
334 text.
addPara(pre +
"Reduces upkeep cost by %s. Reduces demand by %s unit. " +
335 "Increases finds by %s.", 0f, highlight,
342 tooltip.
addPara(pre +
"Reduces upkeep cost by %s. Reduces demand by %s unit. " +
343 "Increases finds by %s.", opad, highlight,
367 String aStr =
"" + (int)Math.round(a * 100f) +
"%";
369 if (mode == ImprovementDescriptionMode.INDUSTRY_TOOLTIP) {
370 info.
addPara(
"Finds increased by %s.", 0f, highlight, aStr);
372 info.
addPara(
"Increases finds by %s.", 0f, highlight, aStr);
376 super.addImproveDesc(info, mode);
static SettingsAPI getSettings()
static SectorAPI getSector()
void modifyFlat(String source, float value)
void unmodifyMult(String source)
void modifyMult(String source, float value)
static int DEMAND_REDUCTION
void applyIncomeAndUpkeep(float sizeOverride)
Map< String, MutableCommodityQuantity > supply
MutableStat demandReduction
void modifyIncoming(MarketAPI market, PopulationComposition incoming)
String getUnavailableReason()
void applyNoAICoreModifiers()
static float ALPHA_CORE_FINDS_BONUS
void applyAlphaCoreSupplyAndDemandModifiers()
static float getTechMiningRuinSizeModifier(MarketAPI market)
void setTechMiningMult(float value)
void addPostDemandSection(TooltipMakerAPI tooltip, boolean hasDemand, IndustryTooltipMode mode)
float getPatherInterest()
static float IMPROVE_FINDS_BONUS
void applyImproveModifiers()
void addImproveDesc(TooltipMakerAPI info, ImprovementDescriptionMode mode)
void addAlphaCoreDescription(TooltipMakerAPI tooltip, AICoreDescriptionMode mode)
CargoAPI generateCargoForGatheringPoint(Random random)
static final String TECH_MINING_MULT
boolean isAvailableToBuild()
float getTechMiningRuinSizeModifier()
float getEffectivenessMult()
float getTechMiningMult()
boolean hasPostDemandSection(boolean hasDemand, IndustryTooltipMode mode)
void applyAlphaCoreModifiers()
static final String RUINS_WIDESPREAD
static final String RUINS_SCATTERED
static final String RUINS_EXTENSIVE
static final String RUINS_VAST
static final String TRITACHYON
static final String TECH_MINING_MULT
void add(String id, float value)
static CargoAPI generateSalvage(Random random, float valueMult, float overallMult, float fuelMult, List< DropData > dropValue, List< DropData > dropRandom)
static Color getHighlightColor()
CommoditySpecAPI getCommoditySpec(String commodityId)
float getFloat(String key)
void removeStack(CargoStackAPI stack)
List< CargoStackAPI > getStacksCopy()
boolean knowsWeapon(String weaponId)
boolean knowsFighter(String wingId)
boolean knowsHullMod(String modId)
boolean knowsIndustry(String industryId)
boolean knowsShip(String hullId)
FactionAPI getPlayerFaction()
void addTransientImmigrationModifier(MarketImmigrationModifier mod)
MutableMarketStatsAPI getStats()
MemoryAPI getMemoryWithoutUpdate()
boolean hasCondition(String id)
void removeTransientImmigrationModifier(MarketImmigrationModifier mod)
List< String > getProvidedWeapons()
List< String > getProvidedShips()
List< String > getProvidedIndustries()
List< String > getProvidedFighters()
float getFloat(String key)
boolean contains(String key)
void set(String key, Object value)
DynamicStatsAPI getDynamic()
MutableStat getStat(String id)