1package com.fs.starfarer.api.impl.campaign;
3import java.util.LinkedHashMap;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.PlanetAPI;
9import com.fs.starfarer.api.campaign.econ.MarketConditionAPI;
10import com.fs.starfarer.api.combat.MutableStat;
11import com.fs.starfarer.api.combat.MutableStat.StatMod;
12import com.fs.starfarer.api.fleet.MutableFleetStatsAPI;
13import com.fs.starfarer.api.impl.campaign.ids.Commodities;
14import com.fs.starfarer.api.impl.campaign.ids.Conditions;
15import com.fs.starfarer.api.impl.campaign.ids.Stats;
16import com.fs.starfarer.api.impl.campaign.procgen.ConditionGenDataSpec;
17import com.fs.starfarer.api.impl.campaign.procgen.themes.DerelictThemeGenerator;
18import com.fs.starfarer.api.plugins.SurveyPlugin;
19import com.fs.starfarer.api.util.Misc;
35 private CampaignFleetAPI fleet;
36 private PlanetAPI planet;
38 private MutableStat costMult =
new MutableStat(1f);
39 private MutableStat xpMult =
new MutableStat(1f);
41 public void init(CampaignFleetAPI fleet, PlanetAPI planet) {
47 costMult.modifyMult(
"planet_hazard", hazard,
"Hazard rating");
51 costMult.modifyMult(
"planet_size", size,
"Planet size");
54 xpMult.applyMods(costMult);
57 MutableFleetStatsAPI stats = fleet.getStats();
58 MutableStat stat = stats.getDynamic().getStat(Stats.SURVEY_COST_MULT);
59 for (StatMod mod : stat.getMultMods().values()) {
60 costMult.modifyMult(mod.source, mod.value, mod.desc);
67 float hazard = planet.getMarket().getHazardValue();
72 float radius = planet.getRadius();
74 if (range <= 0)
return 1f;
80 mult = (int)(mult * 20) / 20f;
87 Map<String, Integer> result =
new LinkedHashMap<String, Integer>();
92 machinery -= (int) Misc.getFleetwideTotalMod(fleet, Stats.getSurveyCostReductionId(Commodities.HEAVY_MACHINERY), 0);
93 machinery = Math.round(machinery / 10f) * 10;
96 result.put(Commodities.CREW, (
int)Math.round((
int)(
BASE_CREW * mult) / 10f) * 10);
97 result.put(Commodities.HEAVY_MACHINERY, machinery);
103 Map<String, Integer> result =
new LinkedHashMap<String, Integer>();
108 supplies = Math.round((
int) supplies / 10f) * 10;
109 supplies -= (int) Misc.getFleetwideTotalMod(fleet, Stats.getSurveyCostReductionId(Commodities.SUPPLIES), 0);
111 result.put(Commodities.SUPPLIES, supplies);
123 if (planet.getMarket() !=
null) {
124 for (MarketConditionAPI mc : planet.getMarket().getConditions()) {
137 ConditionGenDataSpec data = (ConditionGenDataSpec)
Global.
getSettings().
getSpec(ConditionGenDataSpec.class, conditionId,
true);
139 xp += base * data.getXpMult();
150 return "illustrations";
158 if (planet.getMarket() ==
null)
return null;
162 for (MarketConditionAPI mc : planet.getMarket().getConditions()) {
163 if (DerelictThemeGenerator.interestingConditionsWithRuins.contains(mc.getId())) {
166 if (mc.getGenSpec() !=
null) {
168 value += mc.getGenSpec().getRank();
172 if (planet.getMarket().hasCondition(Conditions.HABITABLE)) {
176 float hazard = planet.getMarket().getHazardValue();
177 value -= (hazard - 1f) * 2f;
179 if (value <= 5)
return Commodities.SURVEY_DATA_1;
180 if (value <= 8)
return Commodities.SURVEY_DATA_2;
181 if (value <= 11 && count <= 1)
return Commodities.SURVEY_DATA_3;
182 if (value <= 14 && count <= 2)
return Commodities.SURVEY_DATA_4;
183 return Commodities.SURVEY_DATA_5;
201 Map<String, Integer> result =
new LinkedHashMap<String, Integer>();
203 result.put(Commodities.CREW, 1000);
204 result.put(Commodities.HEAVY_MACHINERY, 100);
205 result.put(Commodities.SUPPLIES, 200);
static SettingsAPI getSettings()
static int MIN_SUPPLIES_OR_MACHINERY
void init(CampaignFleetAPI fleet, PlanetAPI planet)
String getImageCategory()
String getSurveyDataType(PlanetAPI planet)
Map< String, Integer > getRequired()
static int BASE_MACHINERY
static float MULT_AT_MAX_PLANET_RADIUS
float getSizeMultiplier()
float getHazardMultiplier()
Map< String, Integer > getConsumed()
MutableStat getCostMult()
Map< String, Integer > getOutpostConsumed()
static float MIN_PLANET_RADIUS
long getBaseXPForCondition(String conditionId)
static float MAX_PLANET_RADIUS
Object getSpec(Class c, String id, boolean nullOnNotFound)
float getFloat(String key)