1package com.fs.starfarer.api.impl.campaign.submarkets;
4import java.util.Random;
6import org.apache.log4j.Logger;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignUIAPI.CoreUITradeMode;
10import com.fs.starfarer.api.campaign.CargoStackAPI;
11import com.fs.starfarer.api.campaign.CoreUIAPI;
12import com.fs.starfarer.api.campaign.FactionDoctrineAPI;
13import com.fs.starfarer.api.campaign.RepLevel;
14import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
15import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
16import com.fs.starfarer.api.combat.ShipAPI.HullSize;
17import com.fs.starfarer.api.fleet.FleetMemberAPI;
18import com.fs.starfarer.api.impl.campaign.ids.Commodities;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.loading.FighterWingSpecAPI;
21import com.fs.starfarer.api.loading.HullModSpecAPI;
22import com.fs.starfarer.api.loading.WeaponSpecAPI;
23import com.fs.starfarer.api.util.Highlights;
24import com.fs.starfarer.api.util.Misc;
51 float sMult = Math.max(0.1f, stability / 10f);
61 }
else if (stability <= 6) {
66 if (size > 5) size = 5;
102 return "Knights of Ludd";
137 limit *= 0.9f + 0.2f * random.nextFloat();
140 limit *= (0.25f + 0.75f * sm);
142 if (limit < 0) limit = 0;
150 RepLevel req = getRequiredLevelAssumingLegal(commodityId, action);
152 if (req ==
null)
return illegal;
167 RepLevel req = getRequiredLevelAssumingLegal(stack, action);
168 if (req ==
null)
return false;
181 RepLevel req = getRequiredLevelAssumingLegal(stack, action);
198 RepLevel req = getRequiredLevelAssumingLegal(stack, action);
207 h.
append(
"commission", c);
228 if (action == TransferAction.PLAYER_BUY) {
230 case 0:
return RepLevel.FAVORABLE;
231 case 1:
return RepLevel.WELCOMING;
232 case 2:
return RepLevel.FRIENDLY;
233 case 3:
return RepLevel.COOPERATIVE;
236 return RepLevel.VENGEFUL;
240 return getRequiredLevelAssumingLegal((String) stack.
getData(), action);
243 private RepLevel getRequiredLevelAssumingLegal(String commodityId, TransferAction action) {
244 if (action == TransferAction.PLAYER_SELL) {
246 return RepLevel.VENGEFUL;
252 if (com.isPersonnel()) {
253 return RepLevel.COOPERATIVE;
255 return RepLevel.FAVORABLE;
261 if (action == TransferAction.PLAYER_SELL &&
Misc.
isAutomated(member)) {
265 RepLevel req = getRequiredLevelAssumingLegal(member, action);
266 if (req ==
null)
return false;
279 RepLevel req = getRequiredLevelAssumingLegal(member, action);
287 if (!str.isEmpty()) str +=
"\n";
300 if (action == TransferAction.PLAYER_BUY) {
301 return "Illegal to buy";
303 return "Illegal to sell";
310 RepLevel req = getRequiredLevelAssumingLegal(member, action);
327 if (action == TransferAction.PLAYER_BUY) {
344 if (ui.
getTradeMode() == CoreUITradeMode.SNEAK)
return false;
351 return OnClickAction.OPEN_SUBMARKET;
359 return "Requires: proper docking authorization";
366 if (appendix ==
null)
return null;
376 return PlayerEconomyImpactMode.PLAYER_SELL_ONLY;
static Logger getLogger(Class c)
static SectorAPI getSector()
static final String TAG_MILITARY
static final String CUSTOM_OFFERS_COMMISSIONS
static final String LUDDIC_CHURCH
static final String PLAYER
void pruneWeapons(float keepFraction)
boolean okToUpdateShipsAndWeapons()
void addShips(String factionId, float combat, float freighter, float tanker, float transport, float liner, float utility, Float qualityOverride, float qualityMod, ShipPickMode modeOverride, FactionDoctrineAPI doctrineOverride)
float sinceLastCargoUpdate
void addHullMods(int maxTier, int num)
void addFighters(int min, int max, int maxTier, WeightedRandomPicker< String > factionPicker)
void addAndRemoveStockpiledResources(float amount, boolean withShortageCountering, boolean withDecreaseToLimit, boolean withCargoUpdate)
void addWeapons(int min, int max, int maxTier, String factionId)
OnClickAction getOnClickAction(CoreUIAPI ui)
String getTooltipAppendix(CoreUIAPI ui)
boolean isMilitaryMarket()
boolean isIllegalOnSubmarket(FleetMemberAPI member, TransferAction action)
int getStockpileLimit(CommodityOnMarketAPI com)
void init(SubmarketAPI submarket)
boolean isIllegalOnSubmarket(CargoStackAPI stack, TransferAction action)
Highlights getIllegalTransferTextHighlights(FleetMemberAPI member, TransferAction action)
boolean requiresCommission(RepLevel req)
boolean shouldHaveCommodity(CommodityOnMarketAPI com)
PlayerEconomyImpactMode getPlayerEconomyImpactMode()
String getIllegalTransferText(FleetMemberAPI member, TransferAction action)
String getIllegalTransferText(CargoStackAPI stack, TransferAction action)
Highlights getIllegalTransferTextHighlights(CargoStackAPI stack, TransferAction action)
boolean isIllegalOnSubmarket(String commodityId, TransferAction action)
Highlights getTooltipAppendixHighlights(CoreUIAPI ui)
void updateCargoPrePlayerInteraction()
boolean isEnabled(CoreUIAPI ui)
static float getBaseStockpileLimit(CommodityOnMarketAPI com)
void setText(String ... text)
void setColors(Color ... colors)
void append(String str, Color color)
static String ucFirst(String str)
static Color getNegativeHighlightColor()
static boolean isAutomated(MutableShipStatsAPI stats)
static String getCommissionFactionId()
boolean isAtWorst(RepLevel level)
float convertToSeconds(float days)
FleetDataAPI getMothballedShips()
FighterWingSpecAPI getFighterWingSpecIfWing()
boolean isFighterWingStack()
boolean isCommodityStack()
HullModSpecAPI getHullModSpecIfHullMod()
WeaponSpecAPI getWeaponSpecIfWeapon()
CoreUITradeMode getTradeMode()
boolean getCustomBoolean(String key)
String getPersonNamePrefix()
RepLevel getRelationshipLevel(FactionAPI faction)
FactionDoctrineAPI getDoctrine()
void setShipSize(int shipSize)
FactionDoctrineAPI clone()
CampaignClockAPI getClock()
FactionAPI getFaction(String factionId)
CommoditySpecAPI getCommodity()
boolean hasTag(String tag)
float getStabilityValue()
CommodityOnMarketAPI getCommodityData(String commodityId)
boolean isIllegal(String commodityId)
ShipHullSpecAPI getHullSpec()