1package com.fs.starfarer.api.impl.campaign.graid;
4import java.util.LinkedHashSet;
5import java.util.Random;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CargoAPI;
10import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
11import com.fs.starfarer.api.campaign.CargoStackAPI;
12import com.fs.starfarer.api.campaign.FactionAPI;
13import com.fs.starfarer.api.campaign.SpecialItemData;
14import com.fs.starfarer.api.campaign.TextPanelAPI;
15import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
16import com.fs.starfarer.api.campaign.econ.Industry;
17import com.fs.starfarer.api.campaign.econ.MarketAPI;
18import com.fs.starfarer.api.campaign.econ.MutableCommodityQuantity;
19import com.fs.starfarer.api.impl.campaign.ids.Commodities;
20import com.fs.starfarer.api.impl.campaign.ids.Industries;
21import com.fs.starfarer.api.impl.campaign.ids.Items;
22import com.fs.starfarer.api.impl.campaign.ids.Tags;
23import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidDangerLevel;
24import com.fs.starfarer.api.ui.TooltipMakerAPI;
25import com.fs.starfarer.api.util.Misc;
26import com.fs.starfarer.api.util.Pair;
27import com.fs.starfarer.api.util.WeightedRandomPicker;
43 int marines = level.marineTokens;
77 return "" + q.one +
"-" + q.
two;
96 }
else if (scale <= 5) {
99 }
else if (scale <= 7) {
123 scale = Math.max(scale, q.getQuantity().getModifiedInt());
126 scale = Math.max(scale, q.getQuantity().getModifiedInt());
128 int currScore = scale;
130 currScore += 1000 - danger.ordinal();
131 if (currScore > score) {
158 @SuppressWarnings(
"unchecked")
160 String key =
"BlueprintGroundRaidObjectivePluginImpl_dropped";
163 data =
new LinkedHashSet<String>();
166 return (Set<String>) data;
176 String ship =
"MarketCMD_ship____";
177 String weapon =
"MarketCMD_weapon__";
178 String fighter =
"MarketCMD_fighter_";
189 String id2 = ship +
id;
190 if (!playerFaction.
knowsShip(
id) && !droppedBefore.contains(id2)) {
191 notDroppedBefore.
add(id2, 1f);
199 String id2 = weapon +
id;
200 if (!playerFaction.
knowsWeapon(
id) && !droppedBefore.contains(id2)) {
201 notDroppedBefore.
add(weapon +
id, 1f);
203 other.
add(weapon +
id, 1f);
209 String id2 = fighter +
id;
210 if (!playerFaction.
knowsFighter(
id) && !droppedBefore.contains(id2)) {
211 notDroppedBefore.
add(fighter +
id, 1f);
213 other.
add(fighter +
id, 1f);
220 int num = q.one + random.nextInt(q.
two - q.
one + 1);
221 for (
int i = 0; i < num && (!notDroppedBefore.
isEmpty() || !other.
isEmpty()); i++) {
230 if (
id ==
null)
continue;
232 droppedBefore.add(
id);
234 if (
id.startsWith(ship)) {
235 String specId =
id.substring(ship.length());
238 }
else if (
id.startsWith(weapon)) {
239 String specId =
id.substring(weapon.length());
242 }
else if (
id.startsWith(fighter)) {
243 String specId =
id.substring(fighter.length());
251 totalValue += stack.getBaseValuePerUnit() * stack.getSize();
284 t.
addPara(
"Blueprints that enable heavy industry to construct ships, ship weapons, and fighter LPCs. " +
285 "Availability based on the scale of the biggest blueprint-using industry at the colony.", 0f);
289 t.
addPara(
"The value of the recovered blueprints can vary wildly.", opad);
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static SectorAPI getSector()
void setMarinesRequired(int marines)
String getValueString(int marines)
RaidDangerLevel getDangerLevel()
float getQuantity(int marines)
String getQuantityString(int marines)
Set< String > getDropped()
BlueprintGroundRaidObjectivePluginImpl(MarketAPI market)
int performRaid(CargoAPI loot, Random random, float lootMult, TextPanelAPI text)
static float PROBABILITY_TO_DROP_BP_NOT_DROPPED_BEFORE
CargoStackAPI getStackForIcon()
CommoditySpecAPI getCommoditySpec()
Pair< Integer, Integer > getQuantityRange()
int getProjectedCreditsValue()
float getQuantitySortValue()
void setSource(Industry source)
void createTooltip(TooltipMakerAPI t, boolean expanded)
int getValue(int marines)
static final String BLUEPRINTS
static final String TAG_USES_BLUEPRINTS
static final String WEAPON_BP
static final String SHIP_BP
static final String FIGHTER_BP
static Color getNegativeHighlightColor()
static Color getHighlightColor()
static Color getPositiveHighlightColor()
CargoStackAPI createCargoStack(CargoItemType type, Object data, CargoAPI cargo)
ShipHullSpecAPI getHullSpec(String hullId)
CommoditySpecAPI getCommoditySpec(String commodityId)
FighterWingSpecAPI getFighterWingSpec(String wingId)
WeaponSpecAPI getWeaponSpec(String weaponId)
void addSpecial(SpecialItemData data, float quantity)
void addAll(CargoAPI other)
List< CargoStackAPI > getStacksCopy()
boolean knowsWeapon(String weaponId)
Set< String > getKnownFighters()
boolean knowsFighter(String wingId)
Set< String > getKnownWeapons()
Set< String > getKnownShips()
boolean knowsShip(String hullId)
Map< String, Object > getPersistentData()
FactionAPI getPlayerFaction()
RaidDangerLevel getBaseDanger()
RaidDangerLevel adjustItemDangerLevel(String itemId, String data, RaidDangerLevel level)
int adjustMarineTokensToRaidItem(String itemId, String data, int marineTokens)
List< Industry > getIndustries()
boolean hasTag(String tag)
static float XP_GAIN_VALUE_MULT
static float QUANTITY_SORT_TIER_2
boolean hasTag(String tag)
boolean hasTag(String tag)