1package com.fs.starfarer.api.impl.campaign.intel.bases;
3import java.util.ArrayList;
4import java.util.LinkedHashMap;
10import org.apache.log4j.Logger;
11import org.json.JSONException;
12import org.json.JSONObject;
14import com.fs.starfarer.api.EveryFrameScript;
15import com.fs.starfarer.api.Global;
16import com.fs.starfarer.api.campaign.BattleAPI;
17import com.fs.starfarer.api.campaign.CampaignEventListener.FleetDespawnReason;
18import com.fs.starfarer.api.campaign.CampaignFleetAPI;
19import com.fs.starfarer.api.campaign.FactionAPI;
20import com.fs.starfarer.api.campaign.JumpPointAPI;
21import com.fs.starfarer.api.campaign.PersonImportance;
22import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult;
23import com.fs.starfarer.api.campaign.SectorEntityToken;
24import com.fs.starfarer.api.campaign.StarSystemAPI;
25import com.fs.starfarer.api.campaign.TextPanelAPI;
26import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin;
27import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
28import com.fs.starfarer.api.campaign.econ.EconomyAPI.EconomyUpdateListener;
29import com.fs.starfarer.api.campaign.econ.Industry;
30import com.fs.starfarer.api.campaign.econ.MarketAPI;
31import com.fs.starfarer.api.campaign.econ.MarketAPI.SurveyLevel;
32import com.fs.starfarer.api.campaign.listeners.FleetEventListener;
33import com.fs.starfarer.api.characters.PersonAPI;
34import com.fs.starfarer.api.combat.MutableStat.StatMod;
35import com.fs.starfarer.api.combat.ShipVariantAPI;
36import com.fs.starfarer.api.fleet.FleetMemberAPI;
37import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin;
38import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.CustomRepImpact;
39import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope;
40import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions;
41import com.fs.starfarer.api.impl.campaign.DebugFlags;
42import com.fs.starfarer.api.impl.campaign.Tuning;
43import com.fs.starfarer.api.impl.campaign.fleets.RouteLocationCalculator;
44import com.fs.starfarer.api.impl.campaign.ids.Conditions;
45import com.fs.starfarer.api.impl.campaign.ids.Entities;
46import com.fs.starfarer.api.impl.campaign.ids.Factions;
47import com.fs.starfarer.api.impl.campaign.ids.Industries;
48import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
49import com.fs.starfarer.api.impl.campaign.ids.Ranks;
50import com.fs.starfarer.api.impl.campaign.ids.Stats;
51import com.fs.starfarer.api.impl.campaign.ids.Submarkets;
52import com.fs.starfarer.api.impl.campaign.ids.Tags;
53import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
54import com.fs.starfarer.api.impl.campaign.intel.PersonBountyIntel.BountyResult;
55import com.fs.starfarer.api.impl.campaign.intel.PersonBountyIntel.BountyResultType;
56import com.fs.starfarer.api.impl.campaign.intel.bar.PortsideBarData;
57import com.fs.starfarer.api.impl.campaign.intel.bar.events.PirateBaseRumorBarEvent;
58import com.fs.starfarer.api.impl.campaign.intel.deciv.DecivTracker;
59import com.fs.starfarer.api.impl.campaign.intel.events.PirateBasePirateActivityCause2;
60import com.fs.starfarer.api.impl.campaign.intel.raid.PirateRaidActionStage;
61import com.fs.starfarer.api.impl.campaign.intel.raid.PirateRaidAssembleStage;
62import com.fs.starfarer.api.impl.campaign.intel.raid.RaidIntel;
63import com.fs.starfarer.api.impl.campaign.intel.raid.RaidIntel.RaidDelegate;
64import com.fs.starfarer.api.impl.campaign.intel.raid.RaidIntel.RaidStageStatus;
65import com.fs.starfarer.api.impl.campaign.intel.raid.ReturnStage;
66import com.fs.starfarer.api.impl.campaign.intel.raid.TravelStage;
67import com.fs.starfarer.api.impl.campaign.procgen.MarkovNames;
68import com.fs.starfarer.api.impl.campaign.procgen.MarkovNames.MarkovNameResult;
69import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator;
70import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.AddedEntity;
71import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.EntityLocation;
72import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.LocationType;
73import com.fs.starfarer.api.impl.campaign.rulecmd.HA_CMD;
74import com.fs.starfarer.api.ui.Alignment;
75import com.fs.starfarer.api.ui.LabelAPI;
76import com.fs.starfarer.api.ui.SectorMapAPI;
77import com.fs.starfarer.api.ui.TooltipMakerAPI;
78import com.fs.starfarer.api.util.IntervalUtil;
79import com.fs.starfarer.api.util.Misc;
80import com.fs.starfarer.api.util.WeightedRandomPicker;
83 EconomyUpdateListener, RaidDelegate {
88 public static String
MEM_FLAG =
"$core_pirateBase";
107 public static enum PirateBaseTier {
123 public static class BaseBountyData {
124 public float bountyElapsedDays = 0f;
125 public float bountyDuration = 0;
126 public float baseBounty = 0;
127 public float repChange = 0;
196 LinkedHashMap<LocationType, Float> weights =
new LinkedHashMap<LocationType, Float>();
197 weights.put(LocationType.IN_ASTEROID_BELT, 10f);
198 weights.put(LocationType.IN_ASTEROID_FIELD, 10f);
199 weights.put(LocationType.IN_RING, 10f);
200 weights.put(LocationType.IN_SMALL_NEBULA, 10f);
201 weights.put(LocationType.GAS_GIANT_ORBIT, 10f);
202 weights.put(LocationType.PLANET_ORBIT, 10f);
204 EntityLocation loc = locs.
pick();
213 if (added ==
null || added.entity ==
null) {
289 if (super.isHidden())
return true;
297 return base * (0.75f + (float) Math.random() * 0.5f);
302 case TIER_1_1MODULE: base = 100f;
break;
303 case TIER_2_1MODULE: base = 150f;
break;
304 case TIER_3_2MODULE: base = 250f;
break;
305 case TIER_4_3MODULE: base = 300f;
break;
306 case TIER_5_3MODULE: base = 450f;
break;
308 return base * (0.75f + (float) Math.random() * 0.5f);
312 if (status == RaidStageStatus.SUCCESS) {
332 boolean hasTargets =
false;
340 if (!hasTargets)
return;
345 float successMult = 0.5f;
349 float min = Float.MAX_VALUE;
359 if (gather ==
null || raidJump ==
null)
return;
396 for (String key : JSONObject.getNames(json)) {
397 stations.
add(key, (
float) json.optDouble(key, 0f));
399 }
catch (JSONException e) {
411 return stations.
pick();
431 String currIndId =
null;
432 if (stationInd !=
null) {
433 currIndId = stationInd.
getId();
438 if (currIndId ==
null) {
442 if (currIndId ==
null)
return;
446 if (stationInd ==
null)
return;
452 if (fleet ==
null)
return;
455 if (members.size() < 1)
return;
466 picker.
add(index, 1f);
471 float removeMult = 0f;
487 int remove = Math.round(picker.
getItems().size() * removeMult);
488 if (remove < 1 && removeMult > 0)
remove = 1;
491 if (
remove >= picker.
getItems().size() - 1) {
492 remove = picker.
getItems().size() - 2;
495 for (
int i = 0; i <
remove; i++) {
505 if (
tier == PirateBaseTier.TIER_5_3MODULE ||
tier == PirateBaseTier.TIER_4_3MODULE) {
587 (((
float) Math.random() < 0.2f && allowRandomRaids) ||
605 bountyData.bountyElapsedDays += days;
629 if ((
float) Math.random() < prob) {
645 case TIER_1_1MODULE:
return PirateBaseTier.TIER_2_1MODULE;
646 case TIER_2_1MODULE:
return PirateBaseTier.TIER_3_2MODULE;
647 case TIER_3_2MODULE:
return PirateBaseTier.TIER_4_3MODULE;
648 case TIER_4_3MODULE:
return PirateBaseTier.TIER_5_3MODULE;
649 case TIER_5_3MODULE:
return null;
656 case TIER_1_1MODULE:
return null;
657 case TIER_2_1MODULE:
return PirateBaseTier.TIER_1_1MODULE;
658 case TIER_3_2MODULE:
return PirateBaseTier.TIER_2_1MODULE;
659 case TIER_4_3MODULE:
return PirateBaseTier.TIER_3_2MODULE;
660 case TIER_5_3MODULE:
return PirateBaseTier.TIER_4_3MODULE;
688 super.notifyEnding();
715 result =
new BountyResult(BountyResultType.END_OTHER, 0,
null);
717 if (reason == FleetDespawnReason.DESTROYED_BY_BATTLE &&
728 CustomRepImpact impact =
new CustomRepImpact();
730 if (impact.delta < 0.01f) impact.delta = 0.01f;
732 new RepActionEnvelope(RepActions.CUSTOM,
733 impact,
null,
null,
false,
true),
736 result =
new BountyResult(BountyResultType.END_PLAYER_BOUNTY, payment, rep);
738 result =
new BountyResult(BountyResultType.END_PLAYER_NO_REWARD, 0,
null);
743 boolean sendUpdate = DebugFlags.SEND_UPDATES_WHEN_NO_COMM ||
744 result.type != BountyResultType.END_OTHER ||
771 if (mode == ListInfoMode.IN_DESC) initPad = opad;
779 info.
addPara(
"Agreement broken", initPad, tc,
783 info.
addPara(
"Agreement dissolved", tc, initPad);
787 info.
addPara(
"Agreement made with base commander", initPad, tc,
795 if (isUpdate || mode != ListInfoMode.IN_DESC) {
808 case END_PLAYER_BOUNTY:
811 null,
null, info, tc, isUpdate, 0f);
836 return base +
" Base";
844 return base +
" Base - Bounty Posted";
846 return base +
" Base - Bounty Expired";
850 if (
result.type == BountyResultType.END_PLAYER_BOUNTY) {
851 return base +
" Base - Bounty Completed";
852 }
else if (
result.type == BountyResultType.END_PLAYER_NO_REWARD) {
853 return base +
" Base - Destroyed";
860 return base +
" Base - Abandoned";
863 return base +
" Base - Discovered";
866 return base +
" Base - Exact Location Unknown";
868 return base +
" Base - " + name;
899 " established a base in the " +
901 "The base serves as a staging ground for raids against nearby colonies.",
907 info.
addPara(
"It has limited defensive capabilities " +
908 "and is protected by a few fleets.", opad);
911 info.
addPara(
"It has limited defensive capabilities " +
912 "and is protected by a small number of fleets.", opad);
915 info.
addPara(
"It has fairly well-developed defensive capabilities " +
916 "and is protected by a considerable number of fleets.", opad);
919 info.
addPara(
"It has very well-developed defensive capabilities " +
920 "and is protected by a large number of fleets.", opad);
923 info.
addPara(
"It has very well-developed defensive capabilities " +
924 "and is protected by a large number of fleets. Both the " +
925 "base and the fleets have elite-level equipment, at least by pirate standards.", opad);
930 info.
addPara(
"You have not yet discovered the exact location or capabilities of this base.", opad);
941 +
"the base commander, and fleets from this base do not, as a rule, "
942 +
"harass your colonies or shipping. The protection payment is %s of "
943 +
"the gross income of all of your affected colonies, which "
944 +
"amounts to %s per month at their current level of income.", opad,
947 "" + (
int)Math.round(feeFraction * 100f) +
"%", fee
950 label.
setHighlight(
"agreement",
"" + (
int)Math.round(feeFraction * 100f) +
"%", fee);
958 info.
addPara(
"Pirates operating from this base have been targeting the " +
965 " posted a bounty for the destruction of this base.",
969 if (
result !=
null &&
result.type == BountyResultType.END_PLAYER_BOUNTY) {
970 info.
addPara(
"You have successfully completed this bounty.", opad);
977 if (
result.type == BountyResultType.END_PLAYER_NO_REWARD) {
978 info.
addPara(
"You have destroyed this base.", opad);
979 }
else if (
result.type == BountyResultType.END_OTHER) {
980 info.
addPara(
"It is rumored that this base is no longer operational.", opad);
992 Set<String> tags = super.getIntelTags(map);
1033 MarkovNameResult gen =
null;
1034 for (
int i = 0; i < 10; i++) {
1037 String test = gen.name;
1038 if (test.toLowerCase().startsWith(
"the "))
continue;
1040 if (p !=
null && !p.isEmpty()) {
1043 if (test.length() > 22)
continue;
1054 post.
add(
"Astrome");
1055 post.
add(
"Barrage");
1056 post.
add(
"Briganderie");
1059 post.
add(
"Citadel");
1064 post.
add(
"Freehold");
1065 post.
add(
"Freeport");
1066 post.
add(
"Freehaven");
1067 post.
add(
"Free Orbit");
1068 post.
add(
"Galastat");
1069 post.
add(
"Garrison");
1072 post.
add(
"Headquarters");
1073 post.
add(
"Hideout");
1074 post.
add(
"Hideaway");
1079 post.
add(
"Mine Depot");
1084 post.
add(
"Presidio");
1086 post.
add(
"Platform");
1087 post.
add(
"Corsairie");
1089 post.
add(
"Retreat");
1090 post.
add(
"Refinery");
1092 post.
add(
"Safehold");
1093 post.
add(
"Starhold");
1094 post.
add(
"Starport");
1095 post.
add(
"Stardock");
1096 post.
add(
"Sanctuary");
1097 post.
add(
"Station");
1098 post.
add(
"Spacedock");
1099 post.
add(
"Tertiary");
1100 post.
add(
"Terminus");
1101 post.
add(
"Terminal");
1102 post.
add(
"Tortuga");
1114 curr = Math.round(mod.value);
1119 if (m.value < 0)
continue;
1120 avWithoutPenalties += (int) Math.round(m.value);
1124 a = avWithoutPenalties - curr;
1128 int supply = Math.max(1, d - a);
1135 float fleetSizeBonus = 1f;
1136 float qualityBonus = 0f;
1142 case TIER_1_1MODULE:
1144 fleetSizeBonus = 0.2f;
1146 case TIER_2_1MODULE:
1147 qualityBonus = 0.2f;
1148 fleetSizeBonus = 0.3f;
1151 case TIER_3_2MODULE:
1152 qualityBonus = 0.3f;
1153 fleetSizeBonus = 0.4f;
1157 case TIER_4_3MODULE:
1158 qualityBonus = 0.4f;
1159 fleetSizeBonus = 0.5f;
1163 case TIER_5_3MODULE:
1164 qualityBonus = 0.5f;
1165 fleetSizeBonus = 0.75f;
1174 "Development level");
1178 "Development level");
1198 float base = 100000f;
1200 case TIER_1_1MODULE:
1202 bountyData.repChange = 0.02f;
1204 case TIER_2_1MODULE:
1206 bountyData.repChange = 0.05f;
1208 case TIER_3_2MODULE:
1210 bountyData.repChange = 0.06f;
1212 case TIER_4_3MODULE:
1214 bountyData.repChange = 0.07f;
1216 case TIER_5_3MODULE:
1218 bountyData.repChange = 0.1f;
1222 bountyData.baseBounty = base * (0.9f + (float) Math.random() * 0.2f);
1224 bountyData.baseBounty = (int)(
bountyData.baseBounty / 10000) * 10000;
1229 if (curr.getFaction().isPlayerFaction())
continue;
1233 picker.
add(curr.getFaction(), (
float) Math.pow(2f, curr.getSize()));
1238 if (faction ==
null) {
1243 bountyData.bountyFaction = faction;
1244 bountyData.bountyDuration = 180f;
1245 bountyData.bountyElapsedDays = 0f;
1267 if (newTarget ==
target)
return;
1300 List<MarketAPI>
result =
new ArrayList<MarketAPI>();
1309 if (
market ==
null)
return false;
1326 this.targetPlayerColoniesOnly = targetPlayerColonies;
1343 boolean forceTargetIsValid =
false;
1351 forceTargetIsValid =
true;
1359 float w = curr.getSize();
1364 float mult = 1f - Math.max(0f, dist - 10f) / 10f;
1365 if (mult < 0.1f) mult = 0.1f;
1366 if (mult > 1) mult = 1;
1369 if (dist > 15f)
continue;
1378 if (forceTargetIsValid) {
1382 return picker.
pick();
1388 List<ArrowData>
result =
new ArrayList<ArrowData>();
1393 if (iconEntity !=
null) {
1394 entityFrom = iconEntity;
1407 case TIER_1_1MODULE:
return 0.1f;
1408 case TIER_2_1MODULE:
return 0.2f;
1409 case TIER_3_2MODULE:
return 0.3f;
1410 case TIER_4_3MODULE:
return 0.4f;
1411 case TIER_5_3MODULE:
return 0.5f;
1418 case TIER_1_1MODULE:
return 1f;
1419 case TIER_2_1MODULE:
return 1f;
1420 case TIER_3_2MODULE:
return 2f;
1421 case TIER_4_3MODULE:
return 2f;
1422 case TIER_5_3MODULE:
return 3f;
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static Logger getLogger(Class c)
static SectorAPI getSector()
void modifyFlat(String source, float value)
StatMod getFlatStatMod(String source)
HashMap< String, StatMod > getFlatMods()
void modifyFlatAlways(String source, float value, String desc)
void modifyFlat(String source, float value)
static void addAdjustmentMessage(float delta, FactionAPI faction, PersonAPI person, TextPanelAPI panel, TooltipMakerAPI info, Color tc, boolean withCurrent, float pad)
static boolean SEND_UPDATES_WHEN_NO_COMM
static boolean RAID_DEBUG
static int PIRATE_RAID_MIN_TIMEOUT_MONTHS
static float NO_PIRATE_RAID_DAYS_FROM_GAME_START
static int PIRATE_RAID_DEFEATED_TIMEOUT_MONTHS
static int PIRATE_RAID_MAX_TIMEOUT_MONTHS
static JumpPointAPI findJumpPointToUse(CampaignFleetAPI fleet, SectorEntityToken from)
static final String PIRATE_ACTIVITY
static final String POPULATION_3
static final String MAKESHIFT_STATION
static final String PIRATES
static final String CUSTOM_POSTS_NO_BOUNTIES
static final String CUSTOM_PIRATE_BASE_STATION_TYPES
static final String PLAYER
static final String ORBITALSTATION_MID
static final String TAG_STATION
static final String POPULATION
static final String SPACEPORT
static final String MILITARYBASE
static final String ORBITALSTATION_HIGH
static final String ORBITALSTATION
static String HIDDEN_BASE_MEM_FLAG
static String POST_STATION_COMMANDER
static String SPACE_CAPTAIN
static final String COMBAT_FLEET_SIZE_MULT
static final String PATROL_NUM_MEDIUM_MOD
static final String PATROL_NUM_LIGHT_MOD
static final String FLEET_QUALITY_MOD
static final String PATROL_NUM_HEAVY_MOD
static final String SUBMARKET_OPEN
static final String SUBMARKET_BLACK
Set< String > getTagsForSort()
String getSortStringNewestFirst()
void sendUpdate(Object listInfoParam, TextPanelAPI textPanel)
void unindent(TooltipMakerAPI info)
void addDays(TooltipMakerAPI info, String after, float days)
Long getPlayerVisibleTimestamp()
void sendUpdateIfPlayerHasIntel(Object listInfoParam, TextPanelAPI textPanel)
Object getListInfoParam()
Color getBulletColorForMode(ListInfoMode mode)
void bullet(TooltipMakerAPI info)
Color getTitleColor(ListInfoMode mode)
void checkForTierChange()
StarSystemAPI getSystem()
PirateBaseTier matchedStationToTier
static PirateBaseIntel getIntelFor(SectorEntityToken station)
SectorEntityToken getMapLocation(SectorMapAPI map)
boolean targetPlayerColoniesOnly
boolean affectsMarket(MarketAPI market)
float getTimeRemainingFraction()
Industry getStationIndustry()
PirateBaseTier getNextTier(PirateBaseTier tier)
List< ArrowData > getArrowData(SectorMapAPI map)
float getStabilityPenalty()
static final String PIRATE_BASE_COMMANDER
StarSystemAPI getForceTarget()
static Object DEAL_CANCELLED_PARAM
FactionAPI getFactionForUIColors()
boolean isTargetPlayerColoniesOnly()
Set< String > getIntelTags(SectorMapAPI map)
SectorEntityToken getEntity()
static final String HAS_DEAL_WITH_BASE_COMMANDER
StarSystemAPI pickTarget()
void reportBattleOccurred(CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner, BattleAPI battle)
void createSmallDescription(TooltipMakerAPI info, float width, float height)
PersonAPI getBaseCommander()
void notifyRaidEnded(RaidIntel raid, RaidStageStatus status)
static Object DISCOVERED_PARAM
PirateBaseTier getPrevTier(PirateBaseTier tier)
PirateBaseIntel(StarSystemAPI system, String factionId, PirateBaseTier tier)
static PirateBaseIntel getIntelFor(StarSystemAPI system)
boolean isEconomyListenerExpired()
static Object BOUNTY_EXPIRED_PARAM
void setBaseCommander(PersonAPI baseCommander)
float getAccessibilityPenalty()
CampaignFleetAPI addedListenerTo
void updateStationIfNeeded()
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
StarSystemAPI getTarget()
void commodityUpdated(String commodityId)
BaseBountyData bountyData
boolean playerHasDealWithBaseCommander()
StarSystemAPI forceTarget
String getSmallDescriptionTitle()
void setForceTarget(StarSystemAPI forceTarget)
static Object DEAL_MADE_PARAM
void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode)
IntervalUtil monthlyInterval
void setTargetPlayerColoniesOnly(boolean targetPlayerColonies)
void startRaid(StarSystemAPI target, float raidFP)
static PirateBaseIntel getIntelFor(MarketAPI market)
void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param)
CampaignFleetAPI getAddedListenerTo()
void setPlayerHasDealWithBaseCommander(boolean hasDeal)
List< MarketAPI > getAffectedMarkets(StarSystemAPI system)
static Object DEAL_BROKEN_PARAM
void advanceImpl(float amount)
void makeKnown(TextPanelAPI text)
float getDaysSinceStart()
static PirateBaseManager getInstance()
static void markRecentlyUsedForBase(StarSystemAPI system)
static final String NO_DECIV_KEY
static List< MarketAPI > getColoniesAffectedBy(PirateBaseIntel base)
void setSpawnFP(float spawnFP)
void addSource(MarketAPI source)
void setAbortFP(float abortFP)
void addStage(RaidStage stage)
AssembleStage getAssembleStage()
boolean shouldSendUpdate()
static MarkovNameResult generate(Random random)
static void loadIfNeeded()
static WeightedRandomPicker< EntityLocation > getLocations(Random random, StarSystemAPI system, float minGap, LinkedHashMap< LocationType, Float > weights)
static void convertOrbitWithSpin(SectorEntityToken entity, float spin)
static AddedEntity addNonSalvageEntity(LocationAPI system, EntityLocation loc, String type, String faction)
static int computePirateProtectionPaymentPerMonth(PirateBaseIntel intel)
void advance(float amount)
static Color getTextColor()
static String getDGSCredits(float num)
static float getDistanceLY(SectorEntityToken from, SectorEntityToken to)
static List< MarketAPI > getMarketsInLocation(LocationAPI location, String factionId)
static String ucFirst(String str)
static Color getNegativeHighlightColor()
static void removeRadioChatter(MarketAPI market)
static void makeImportant(SectorEntityToken entity, String reason)
static Color getGrayColor()
static void fadeAndExpire(SectorEntityToken entity)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static void makeUnimportant(SectorEntityToken entity, String reason)
static Color getHighlightColor()
static CampaignFleetAPI getStationFleet(MarketAPI market)
static boolean isActiveModule(ShipVariantAPI variant)
static Color getPositiveHighlightColor()
MarketAPI createMarket(String id, String name, int size)
String getSpriteName(String category, String id)
float getFloat(String key)
float getPlayerInvolvementFraction()
boolean isPlayerInvolved()
float convertToDays(float realSeconds)
FleetDataAPI getFleetData()
MutableValue getCredits()
String addPerson(PersonAPI person)
String getDisplayNameHasOrHave()
String getDisplayNameWithArticleWithoutArticle()
String getDisplayNameWithArticle()
PersonAPI createRandomPerson()
float getTariffFraction()
boolean isPlayerFaction()
List< FleetMemberAPI > getMembersListCopy()
void addEventListener(FleetEventListener listener)
void removeEventListener(FleetEventListener listener)
List getEntities(Class implementedClassOrInterface)
String getNameWithLowercaseType()
CampaignFleetAPI getPlayerFleet()
ReputationAdjustmentResult adjustPlayerReputation(Object action, String factionId)
CampaignClockAPI getClock()
IntelManagerAPI getIntelManager()
ListenerManagerAPI getListenerManager()
LocationAPI getContainingLocation()
StatBonus getDetectedRangeMod()
boolean isInCurrentLocation()
void setSensorProfile(Float sensorProfile)
void setDiscoverable(Boolean discoverable)
void setName(String name)
void setMarket(MarketAPI market)
SectorEntityToken getCenter()
void addIntel(IntelInfoPlugin plugin)
void removeIntel(IntelInfoPlugin plugin)
List< IntelInfoPlugin > getIntel()
boolean isPlayerInRangeOfCommRelay()
MutableStatWithTempMods getAvailableStat()
void addUpdateListener(EconomyUpdateListener listener)
List< StarSystemAPI > getStarSystemsWithMarkets()
void addMarket(MarketAPI market, boolean withJunkAndChatter)
List< MarketAPI > getMarkets(LocationAPI loc)
void removeMarket(MarketAPI market)
void removeUpdateListener(EconomyUpdateListener listener)
void finishBuildingOrUpgrading()
void setSurveyLevel(SurveyLevel surveyLevel)
LocationAPI getContainingLocation()
void setEconGroup(String econGroup)
void setFactionId(String factionId)
void addSubmarket(String specId)
void setHidden(Boolean hidden)
CommodityOnMarketAPI getCommodityData(String commodityId)
void setPrimaryEntity(SectorEntityToken primaryEntity)
MutableMarketStatsAPI getStats()
MemoryAPI getMemoryWithoutUpdate()
void setName(String name)
CommDirectoryAPI getCommDirectory()
void advance(float amount)
void removeIndustry(String id, MarketInteractionMode mode, boolean forUpgrade)
String addCondition(String id)
List< Industry > getIndustries()
Vector2f getLocationInHyperspace()
SectorEntityToken getPrimaryEntity()
void addIndustry(String id)
void addListener(Object listener)
void removeListener(Object listener)
void set(String key, Object value)
boolean getBoolean(String key)
void setImportance(PersonImportance importance)
void setImportanceAndVoice(PersonImportance importance, Random random)
void setRankId(String rank)
MemoryAPI getMemoryWithoutUpdate()
void setPostId(String postId)
List< String > getModuleSlots()
ShipVariantAPI getModuleVariant(String slotId)
ShipVariantAPI getVariant()
FleetMemberStatusAPI getStatus()
void setDetached(int index, Boolean detached)
void setPermaDetached(int index, Boolean detached)
void setHullFraction(float fraction)
DynamicStatsAPI getDynamic()
void setHighlight(int start, int end)
void setHighlightColors(Color ... colors)
SectorEntityToken getIntelIconEntity(IntelInfoPlugin plugin)
StatBonus getMod(String id)