1package com.fs.starfarer.api.impl.campaign.econ.impl;
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.SpecialItemData;
7import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
8import com.fs.starfarer.api.impl.campaign.ids.Commodities;
9import com.fs.starfarer.api.impl.campaign.ids.Conditions;
10import com.fs.starfarer.api.impl.campaign.ids.Industries;
11import com.fs.starfarer.api.impl.campaign.ids.Items;
12import com.fs.starfarer.api.impl.campaign.ids.Stats;
13import com.fs.starfarer.api.ui.TooltipMakerAPI;
14import com.fs.starfarer.api.util.Misc;
15import com.fs.starfarer.api.util.Pair;
30 int size =
market.getSize();
32 boolean works = Industries.ORBITALWORKS.equals(
getId());
34 float qualityBonus = 0;
40 demand(Commodities.METALS, size);
41 demand(Commodities.RARE_METALS, size - 2);
43 supply(Commodities.HEAVY_MACHINERY, size - 2);
44 supply(Commodities.SUPPLIES, size - 2);
45 supply(Commodities.HAND_WEAPONS, size - 2);
46 supply(Commodities.SHIPS, size - 2);
48 supply(1, Commodities.SHIPS, shipBonus,
"Orbital works");
51 Pair<String, Integer> deficit =
getMaxDeficit(Commodities.METALS, Commodities.RARE_METALS);
52 int maxDeficit = size - 3;
53 if (deficit.two > maxDeficit) deficit.two = maxDeficit;
56 Commodities.HEAVY_MACHINERY,
58 Commodities.HAND_WEAPONS,
65 if (qualityBonus > 0) {
66 market.getStats().getDynamic().getMod(Stats.PRODUCTION_QUALITY_MOD).modifyFlat(
getModId(1), qualityBonus,
"Orbital works");
69 float stability =
market.getPrevStability();
71 float stabilityMod = (stability - 5f) / 5f;
87 market.getStats().getDynamic().getMod(Stats.PRODUCTION_QUALITY_MOD).unmodifyFlat(
getModId(0));
88 market.getStats().getDynamic().getMod(Stats.PRODUCTION_QUALITY_MOD).unmodifyFlat(
getModId(1));
93 protected void addPostDemandSection(TooltipMakerAPI tooltip,
boolean hasDemand, IndustryTooltipMode mode) {
95 if (mode != IndustryTooltipMode.NORMAL ||
isFunctional()) {
96 boolean works = Industries.ORBITALWORKS.equals(
getId());
99 String totalStr =
"+" + (int)Math.round(total * 100f) +
"%";
100 Color h = Misc.getHighlightColor();
102 h = Misc.getNegativeHighlightColor();
103 totalStr =
"" + (int)Math.round(total * 100f) +
"%";
107 tooltip.addPara(
"Ship quality: %s", opad, h, totalStr);
108 tooltip.addPara(
"*Quality bonus only applies for the largest ship producer in the faction.",
109 Misc.getGrayColor(), opad);
130 if (
special !=
null && Items.CORRUPTED_NANOFORGE.equals(
special.getId()) &&
131 data !=
null && Items.PRISTINE_NANOFORGE.equals(data.getId())) {
134 return super.wantsToUseSpecialItem(data);
143 super.advance(amount);
154 if (!
market.hasCondition(Conditions.HABITABLE))
return;
static SectorAPI getSector()
Map< String, MutableCommodityQuantity > supply
Map< String, MutableCommodityQuantity > demand
String getNameForModifier()
Pair< String, Integer > getMaxDeficit(String ... commodityIds)
void applyDeficitToProduction(int index, Pair< String, Integer > deficit, String ... commodities)
boolean wantsToUseSpecialItem(SpecialItemData data)
void setSpecialItem(SpecialItemData special)
void addPostDemandSection(TooltipMakerAPI tooltip, boolean hasDemand, IndustryTooltipMode mode)
static float DAYS_BEFORE_POLLUTION_PERMANENT
boolean isDemandLegal(CommodityOnMarketAPI com)
boolean isSupplyLegal(CommodityOnMarketAPI com)
void setAddedPollution(boolean addedPollution)
boolean isPermaPollution()
static float DAYS_BEFORE_POLLUTION
float getDaysWithNanoforge()
boolean canImproveToIncreaseProduction()
void updatePollutionStatus()
static float ORBITAL_WORKS_QUALITY_BONUS
void advance(float amount)
void setDaysWithNanoforge(float daysWithNanoforge)
boolean isAddedPollution()
void setPermaPollution(boolean permaPollution)
static String POLLUTION_ID