Starsector API
Loading...
Searching...
No Matches
CoreLifecyclePluginImpl.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign;
2
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.HashMap;
6import java.util.HashSet;
7import java.util.Iterator;
8import java.util.LinkedHashSet;
9import java.util.List;
10import java.util.Map;
11import java.util.Random;
12import java.util.Set;
13
14import com.fs.starfarer.api.BaseModPlugin;
15import com.fs.starfarer.api.EveryFrameScript;
16import com.fs.starfarer.api.Global;
17import com.fs.starfarer.api.PluginPick;
18import com.fs.starfarer.api.campaign.CampaignFleetAPI;
19import com.fs.starfarer.api.campaign.CampaignPlugin.PickPriority;
20import com.fs.starfarer.api.campaign.CampaignTerrainAPI;
21import com.fs.starfarer.api.campaign.FactionAPI;
22import com.fs.starfarer.api.campaign.GenericPluginManagerAPI;
23import com.fs.starfarer.api.campaign.JumpPointAPI.JumpDestination;
24import com.fs.starfarer.api.campaign.LocationAPI;
25import com.fs.starfarer.api.campaign.PersonImportance;
26import com.fs.starfarer.api.campaign.PlayerMarketTransaction.TransactionLineItem;
27import com.fs.starfarer.api.campaign.SectorAPI;
28import com.fs.starfarer.api.campaign.SectorEntityToken;
29import com.fs.starfarer.api.campaign.SpecialItemData;
30import com.fs.starfarer.api.campaign.StarSystemAPI;
31import com.fs.starfarer.api.campaign.econ.Industry;
32import com.fs.starfarer.api.campaign.econ.MarketAPI;
33import com.fs.starfarer.api.campaign.econ.MarketAPI.SurveyLevel;
34import com.fs.starfarer.api.campaign.econ.MonthlyReport;
35import com.fs.starfarer.api.campaign.econ.MonthlyReport.FDNode;
36import com.fs.starfarer.api.campaign.events.CampaignEventTarget;
37import com.fs.starfarer.api.campaign.listeners.CoreDiscoverEntityPlugin;
38import com.fs.starfarer.api.campaign.listeners.ListenerManagerAPI;
39import com.fs.starfarer.api.campaign.listeners.TestIndustryOptionProvider;
40import com.fs.starfarer.api.characters.AdminData;
41import com.fs.starfarer.api.characters.ImportantPeopleAPI;
42import com.fs.starfarer.api.characters.MutableCharacterStatsAPI;
43import com.fs.starfarer.api.characters.MutableCharacterStatsAPI.SkillLevelAPI;
44import com.fs.starfarer.api.characters.PersonAPI;
45import com.fs.starfarer.api.characters.SkillsChangeOfficerEffect;
46import com.fs.starfarer.api.characters.SkillsChangeRemoveExcessOPEffect;
47import com.fs.starfarer.api.characters.SkillsChangeRemoveSmodsEffect;
48import com.fs.starfarer.api.characters.SkillsChangeRemoveVentsCapsEffect;
49import com.fs.starfarer.api.combat.ShipAIConfig;
50import com.fs.starfarer.api.combat.ShipAIPlugin;
51import com.fs.starfarer.api.combat.ShipAPI;
52import com.fs.starfarer.api.fleet.FleetMemberAPI;
53import com.fs.starfarer.api.impl.PlayerFleetPersonnelTracker;
54import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.MissionCompletionRep;
55import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin.DerelictShipData;
56import com.fs.starfarer.api.impl.campaign.GateEntityPlugin.GateData;
57import com.fs.starfarer.api.impl.campaign.MilitaryResponseScript.MilitaryResponseParams;
58import com.fs.starfarer.api.impl.campaign.TowCable.TowCableBuff;
59import com.fs.starfarer.api.impl.campaign.abilities.BaseAbilityPlugin;
60import com.fs.starfarer.api.impl.campaign.abilities.BaseDurationAbility;
61import com.fs.starfarer.api.impl.campaign.abilities.BaseToggleAbility;
62import com.fs.starfarer.api.impl.campaign.abilities.DistressCallAbility;
63import com.fs.starfarer.api.impl.campaign.abilities.DistressCallAbility.AbilityUseData;
64import com.fs.starfarer.api.impl.campaign.abilities.DistressCallAbility.DistressCallOutcome;
65import com.fs.starfarer.api.impl.campaign.abilities.DistressCallAbility.DistressResponseData;
66import com.fs.starfarer.api.impl.campaign.abilities.DistressCallResponseAssignmentAI;
67import com.fs.starfarer.api.impl.campaign.abilities.DistressCallResponsePirateAssignmentAI;
68import com.fs.starfarer.api.impl.campaign.abilities.EmergencyBurnAbility;
69import com.fs.starfarer.api.impl.campaign.abilities.FractureJumpAbility;
70import com.fs.starfarer.api.impl.campaign.abilities.GoDarkAbility;
71import com.fs.starfarer.api.impl.campaign.abilities.GraviticScanAbility;
72import com.fs.starfarer.api.impl.campaign.abilities.GraviticScanData;
73import com.fs.starfarer.api.impl.campaign.abilities.GraviticScanData.GSPing;
74import com.fs.starfarer.api.impl.campaign.abilities.InterdictionPulseAbility;
75import com.fs.starfarer.api.impl.campaign.abilities.InterdictionPulseAbility.IPReactionScript;
76import com.fs.starfarer.api.impl.campaign.abilities.RemoteSurveyAbility;
77import com.fs.starfarer.api.impl.campaign.abilities.ScavengeAbility;
78import com.fs.starfarer.api.impl.campaign.abilities.SensorBurstAbility;
79import com.fs.starfarer.api.impl.campaign.abilities.SustainedBurnAbility;
80import com.fs.starfarer.api.impl.campaign.abilities.TransponderAbility;
81import com.fs.starfarer.api.impl.campaign.abilities.ai.BaseAbilityAI;
82import com.fs.starfarer.api.impl.campaign.abilities.ai.EmergencyBurnAbilityAI;
83import com.fs.starfarer.api.impl.campaign.abilities.ai.GoDarkAbilityAI;
84import com.fs.starfarer.api.impl.campaign.abilities.ai.InterdictionPulseAbilityAI;
85import com.fs.starfarer.api.impl.campaign.abilities.ai.SensorBurstAbilityAI;
86import com.fs.starfarer.api.impl.campaign.abilities.ai.SustainedBurnAbilityAI;
87import com.fs.starfarer.api.impl.campaign.abilities.ai.TransponderAbilityAI;
88import com.fs.starfarer.api.impl.campaign.command.WarSimScript;
89import com.fs.starfarer.api.impl.campaign.econ.AbandonedStation;
90import com.fs.starfarer.api.impl.campaign.econ.BaseHazardCondition;
91import com.fs.starfarer.api.impl.campaign.econ.BaseMarketConditionPlugin;
92import com.fs.starfarer.api.impl.campaign.econ.CottageIndustry;
93import com.fs.starfarer.api.impl.campaign.econ.Decivilized;
94import com.fs.starfarer.api.impl.campaign.econ.Dissident;
95import com.fs.starfarer.api.impl.campaign.econ.FoodShortage;
96import com.fs.starfarer.api.impl.campaign.econ.FreeMarket;
97import com.fs.starfarer.api.impl.campaign.econ.Frontier;
98import com.fs.starfarer.api.impl.campaign.econ.Headquarters;
99import com.fs.starfarer.api.impl.campaign.econ.Hydroponics;
100import com.fs.starfarer.api.impl.campaign.econ.LargeRefugeePopulation;
101import com.fs.starfarer.api.impl.campaign.econ.LuddicMajority;
102import com.fs.starfarer.api.impl.campaign.econ.OrbitalBurns;
103import com.fs.starfarer.api.impl.campaign.econ.OrganizedCrime;
104import com.fs.starfarer.api.impl.campaign.econ.Outpost;
105import com.fs.starfarer.api.impl.campaign.econ.Population;
106import com.fs.starfarer.api.impl.campaign.econ.RecentUnrest;
107import com.fs.starfarer.api.impl.campaign.econ.RegionalCapital;
108import com.fs.starfarer.api.impl.campaign.econ.ResourceDepositsCondition;
109import com.fs.starfarer.api.impl.campaign.econ.RuralPolity;
110import com.fs.starfarer.api.impl.campaign.econ.ShipbreakingCenter;
111import com.fs.starfarer.api.impl.campaign.econ.ShippingDisruption;
112import com.fs.starfarer.api.impl.campaign.econ.Smuggling;
113import com.fs.starfarer.api.impl.campaign.econ.StealthMinefields;
114import com.fs.starfarer.api.impl.campaign.econ.SystemBounty;
115import com.fs.starfarer.api.impl.campaign.econ.TradeCenter;
116import com.fs.starfarer.api.impl.campaign.econ.TradeDisruption;
117import com.fs.starfarer.api.impl.campaign.econ.UrbanizedPolity;
118import com.fs.starfarer.api.impl.campaign.econ.ViceDemand;
119import com.fs.starfarer.api.impl.campaign.econ.WorldArid;
120import com.fs.starfarer.api.impl.campaign.econ.WorldBarrenMarginal;
121import com.fs.starfarer.api.impl.campaign.econ.WorldDesert;
122import com.fs.starfarer.api.impl.campaign.econ.WorldIce;
123import com.fs.starfarer.api.impl.campaign.econ.WorldJungle;
124import com.fs.starfarer.api.impl.campaign.econ.WorldTerran;
125import com.fs.starfarer.api.impl.campaign.econ.WorldTundra;
126import com.fs.starfarer.api.impl.campaign.econ.WorldTwilight;
127import com.fs.starfarer.api.impl.campaign.econ.WorldUninhabitable;
128import com.fs.starfarer.api.impl.campaign.econ.WorldWater;
129import com.fs.starfarer.api.impl.campaign.econ.impl.BaseIndustry;
130import com.fs.starfarer.api.impl.campaign.econ.impl.Cryorevival;
131import com.fs.starfarer.api.impl.campaign.econ.impl.Cryorevival.CryosleeperFactor;
132import com.fs.starfarer.api.impl.campaign.econ.impl.Cryosanctum;
133import com.fs.starfarer.api.impl.campaign.econ.impl.Farming;
134import com.fs.starfarer.api.impl.campaign.econ.impl.FuelProduction;
135import com.fs.starfarer.api.impl.campaign.econ.impl.GroundDefenses;
136import com.fs.starfarer.api.impl.campaign.econ.impl.HeavyIndustry;
137import com.fs.starfarer.api.impl.campaign.econ.impl.LightIndustry;
138import com.fs.starfarer.api.impl.campaign.econ.impl.LionsGuardHQ;
139import com.fs.starfarer.api.impl.campaign.econ.impl.MilitaryBase;
140import com.fs.starfarer.api.impl.campaign.econ.impl.Mining;
141import com.fs.starfarer.api.impl.campaign.econ.impl.OrbitalStation;
142import com.fs.starfarer.api.impl.campaign.econ.impl.PlanetaryShield;
143import com.fs.starfarer.api.impl.campaign.econ.impl.PopulationAndInfrastructure;
144import com.fs.starfarer.api.impl.campaign.econ.impl.PopulationAndInfrastructure.CoronalTapFactor;
145import com.fs.starfarer.api.impl.campaign.econ.impl.Refining;
146import com.fs.starfarer.api.impl.campaign.econ.impl.ShipQuality;
147import com.fs.starfarer.api.impl.campaign.econ.impl.Spaceport;
148import com.fs.starfarer.api.impl.campaign.econ.impl.TechMining;
149import com.fs.starfarer.api.impl.campaign.econ.impl.Waystation;
150import com.fs.starfarer.api.impl.campaign.enc.EncounterManager;
151import com.fs.starfarer.api.impl.campaign.enc.StrandedGiveTJScript;
152import com.fs.starfarer.api.impl.campaign.events.BaseEventPlugin;
153import com.fs.starfarer.api.impl.campaign.events.CoreEventProbabilityManager;
154import com.fs.starfarer.api.impl.campaign.events.FactionHostilityEvent;
155import com.fs.starfarer.api.impl.campaign.events.FactionHostilityEvent.FactionHostilityPairKey;
156import com.fs.starfarer.api.impl.campaign.events.FoodShortageEvent;
157import com.fs.starfarer.api.impl.campaign.events.InvestigationEventGoodRepWithOther;
158import com.fs.starfarer.api.impl.campaign.events.InvestigationEventSmugglingV2;
159import com.fs.starfarer.api.impl.campaign.events.OfficerManagerEvent;
160import com.fs.starfarer.api.impl.campaign.events.OfficerManagerEvent.AvailableOfficer;
161import com.fs.starfarer.api.impl.campaign.events.PriceUpdate;
162import com.fs.starfarer.api.impl.campaign.events.RecentUnrestEvent;
163import com.fs.starfarer.api.impl.campaign.events.RepTrackerEvent;
164import com.fs.starfarer.api.impl.campaign.events.RepTrackerEvent.FactionTradeRepData;
165import com.fs.starfarer.api.impl.campaign.events.TradeInfoUpdateEvent;
166import com.fs.starfarer.api.impl.campaign.events.nearby.DistressCallNormalAssignmentAI;
167import com.fs.starfarer.api.impl.campaign.events.nearby.DistressCallPirateAmbushAssignmentAI;
168import com.fs.starfarer.api.impl.campaign.events.nearby.DistressCallPirateAmbushTrapAssignmentAI;
169import com.fs.starfarer.api.impl.campaign.events.nearby.NearbyEventsEvent;
170import com.fs.starfarer.api.impl.campaign.events.nearby.NearbyEventsEvent.NESpawnData;
171import com.fs.starfarer.api.impl.campaign.fleets.BaseLimitedFleetManager.ManagedFleetData;
172import com.fs.starfarer.api.impl.campaign.fleets.BaseRouteFleetManager;
173import com.fs.starfarer.api.impl.campaign.fleets.CustomFleets;
174import com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflater;
175import com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflaterParams;
176import com.fs.starfarer.api.impl.campaign.fleets.DisposableAggroAssignmentAI;
177import com.fs.starfarer.api.impl.campaign.fleets.DisposableFleetManager;
178import com.fs.starfarer.api.impl.campaign.fleets.DisposableLuddicPathFleetManager;
179import com.fs.starfarer.api.impl.campaign.fleets.DisposablePirateFleetManager;
180import com.fs.starfarer.api.impl.campaign.fleets.EconomyFleetAssignmentAI;
181import com.fs.starfarer.api.impl.campaign.fleets.EconomyFleetAssignmentAI.CargoQuantityData;
182import com.fs.starfarer.api.impl.campaign.fleets.EconomyFleetAssignmentAI.EconomyRouteData;
183import com.fs.starfarer.api.impl.campaign.fleets.EconomyFleetRouteManager;
184import com.fs.starfarer.api.impl.campaign.fleets.FleetParamsV3;
185import com.fs.starfarer.api.impl.campaign.fleets.MercAssignmentAIV2;
186import com.fs.starfarer.api.impl.campaign.fleets.MercFleetManagerV2;
187import com.fs.starfarer.api.impl.campaign.fleets.PatrolAssignmentAI;
188import com.fs.starfarer.api.impl.campaign.fleets.PatrolAssignmentAIV4;
189import com.fs.starfarer.api.impl.campaign.fleets.PatrolFleetManager;
190import com.fs.starfarer.api.impl.campaign.fleets.PatrolFleetManager.PatrolFleetData;
191import com.fs.starfarer.api.impl.campaign.fleets.PatrolFleetManagerV2;
192import com.fs.starfarer.api.impl.campaign.fleets.PersonalFleetHoracioCaden;
193import com.fs.starfarer.api.impl.campaign.fleets.PersonalFleetOxanaHyder;
194import com.fs.starfarer.api.impl.campaign.fleets.RouteManager;
195import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.OptionalFleetData;
196import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
197import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteFleetSpawner;
198import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
199import com.fs.starfarer.api.impl.campaign.fleets.SDFHegemony;
200import com.fs.starfarer.api.impl.campaign.fleets.SDFLeague;
201import com.fs.starfarer.api.impl.campaign.fleets.SDFLuddicChurch;
202import com.fs.starfarer.api.impl.campaign.fleets.SDFTriTachyon;
203import com.fs.starfarer.api.impl.campaign.fleets.SeededFleetManager;
204import com.fs.starfarer.api.impl.campaign.fleets.SeededFleetManager.SeededFleet;
205import com.fs.starfarer.api.impl.campaign.fleets.SourceBasedFleetManager;
206import com.fs.starfarer.api.impl.campaign.fleets.misc.MiscFleetRouteManager;
207import com.fs.starfarer.api.impl.campaign.ghosts.SensorGhostManager;
208import com.fs.starfarer.api.impl.campaign.graid.StandardGroundRaidObjectivesCreator;
209import com.fs.starfarer.api.impl.campaign.ids.Commodities;
210import com.fs.starfarer.api.impl.campaign.ids.Conditions;
211import com.fs.starfarer.api.impl.campaign.ids.Factions;
212import com.fs.starfarer.api.impl.campaign.ids.Industries;
213import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
214import com.fs.starfarer.api.impl.campaign.ids.Missions;
215import com.fs.starfarer.api.impl.campaign.ids.People;
216import com.fs.starfarer.api.impl.campaign.ids.Personalities;
217import com.fs.starfarer.api.impl.campaign.ids.Ranks;
218import com.fs.starfarer.api.impl.campaign.ids.Skills;
219import com.fs.starfarer.api.impl.campaign.ids.Tags;
220import com.fs.starfarer.api.impl.campaign.intel.AnalyzeEntityIntelCreator;
221import com.fs.starfarer.api.impl.campaign.intel.AnalyzeEntityMissionIntel;
222import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
223import com.fs.starfarer.api.impl.campaign.intel.BaseMissionIntel;
224import com.fs.starfarer.api.impl.campaign.intel.BaseMissionIntel.MissionResult;
225import com.fs.starfarer.api.impl.campaign.intel.FactionCommissionIntel;
226import com.fs.starfarer.api.impl.campaign.intel.FactionCommissionIntel.RepChangeData;
227import com.fs.starfarer.api.impl.campaign.intel.FactionHostilityIntel;
228import com.fs.starfarer.api.impl.campaign.intel.FactionHostilityManager;
229import com.fs.starfarer.api.impl.campaign.intel.GenericMissionManager;
230import com.fs.starfarer.api.impl.campaign.intel.PersonBountyIntel;
231import com.fs.starfarer.api.impl.campaign.intel.PersonBountyManager;
232import com.fs.starfarer.api.impl.campaign.intel.ProcurementMissionCreator;
233import com.fs.starfarer.api.impl.campaign.intel.ProcurementMissionIntel;
234import com.fs.starfarer.api.impl.campaign.intel.SurveyPlanetIntelCreator;
235import com.fs.starfarer.api.impl.campaign.intel.SurveyPlanetMissionIntel;
236import com.fs.starfarer.api.impl.campaign.intel.SystemBountyIntel;
237import com.fs.starfarer.api.impl.campaign.intel.SystemBountyManager;
238import com.fs.starfarer.api.impl.campaign.intel.bar.PortsideBarData;
239import com.fs.starfarer.api.impl.campaign.intel.bar.events.BarEventManager;
240import com.fs.starfarer.api.impl.campaign.intel.bar.events.CorruptPLClerkSuppliesBarEvent;
241import com.fs.starfarer.api.impl.campaign.intel.bar.events.CorruptPLClerkSuppliesBarEventCreator;
242import com.fs.starfarer.api.impl.campaign.intel.bar.events.DeliveryBarEvent;
243import com.fs.starfarer.api.impl.campaign.intel.bar.events.DeliveryBarEventCreator;
244import com.fs.starfarer.api.impl.campaign.intel.bar.events.DeliveryFailureConsequences;
245import com.fs.starfarer.api.impl.campaign.intel.bar.events.DeliveryMissionIntel;
246import com.fs.starfarer.api.impl.campaign.intel.bar.events.DiktatLobsterBarEvent;
247import com.fs.starfarer.api.impl.campaign.intel.bar.events.DiktatLobsterBarEventCreator;
248import com.fs.starfarer.api.impl.campaign.intel.bar.events.LuddicCraftBarEvent;
249import com.fs.starfarer.api.impl.campaign.intel.bar.events.LuddicCraftBarEventCreator;
250import com.fs.starfarer.api.impl.campaign.intel.bar.events.LuddicFarmerBarEvent;
251import com.fs.starfarer.api.impl.campaign.intel.bar.events.LuddicFarmerBarEventCreator;
252import com.fs.starfarer.api.impl.campaign.intel.bar.events.LuddicPathBaseBarEvent;
253import com.fs.starfarer.api.impl.campaign.intel.bar.events.MercsOnTheRunBarEvent;
254import com.fs.starfarer.api.impl.campaign.intel.bar.events.MercsOnTheRunBarEventCreator;
255//import com.fs.starfarer.api.impl.campaign.intel.bar.events.MercsOnTheRunBarEventCreator;
256import com.fs.starfarer.api.impl.campaign.intel.bar.events.PirateBaseRumorBarEvent;
257import com.fs.starfarer.api.impl.campaign.intel.bar.events.PlanetaryShieldBarEventCreator;
258import com.fs.starfarer.api.impl.campaign.intel.bar.events.QuartermasterCargoSwapBarEvent;
259import com.fs.starfarer.api.impl.campaign.intel.bar.events.QuartermasterCargoSwapBarEventCreator;
260import com.fs.starfarer.api.impl.campaign.intel.bar.events.ScientistAICoreBarEvent;
261import com.fs.starfarer.api.impl.campaign.intel.bar.events.ScientistAICoreBarEventCreator;
262import com.fs.starfarer.api.impl.campaign.intel.bar.events.ScientistAICoreIntel;
263import com.fs.starfarer.api.impl.campaign.intel.bar.events.SpecBarEventCreator;
264import com.fs.starfarer.api.impl.campaign.intel.bar.events.TriTachLoanBarEvent;
265import com.fs.starfarer.api.impl.campaign.intel.bar.events.TriTachLoanBarEventCreator;
266import com.fs.starfarer.api.impl.campaign.intel.bar.events.TriTachLoanIncentiveScript;
267import com.fs.starfarer.api.impl.campaign.intel.bar.events.TriTachMajorLoanBarEvent;
268import com.fs.starfarer.api.impl.campaign.intel.bar.events.TriTachMajorLoanBarEventCreator;
269import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.DonationOfferCreator;
270import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.FighterBlueprintOfferCreator;
271import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.HistorianBarEvent;
272import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.HistorianBarEventCreator;
273import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.HistorianData;
274import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.ShipBlueprintOfferCreator;
275import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.SpecialItemOfferCreator;
276import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.WeaponBlueprintOffer;
277import com.fs.starfarer.api.impl.campaign.intel.bar.events.historian.WeaponBlueprintOfferCreator;
278import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathBaseIntel;
279import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathBaseManager;
280import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathCells;
281import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathCellsIntel;
282import com.fs.starfarer.api.impl.campaign.intel.bases.PirateActivity;
283import com.fs.starfarer.api.impl.campaign.intel.bases.PirateActivityIntel;
284import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseIntel;
285import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseIntel.BaseBountyData;
286import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager;
287import com.fs.starfarer.api.impl.campaign.intel.bases.PlayerRelatedPirateBaseManager;
288import com.fs.starfarer.api.impl.campaign.intel.contacts.ContactIntel;
289import com.fs.starfarer.api.impl.campaign.intel.deciv.DecivIntel;
290import com.fs.starfarer.api.impl.campaign.intel.deciv.DecivTracker;
291import com.fs.starfarer.api.impl.campaign.intel.deciv.DecivTracker.MarketDecivData;
292import com.fs.starfarer.api.impl.campaign.intel.events.BaseEventIntel;
293import com.fs.starfarer.api.impl.campaign.intel.events.BaseEventIntel.EventStageData;
294import com.fs.starfarer.api.impl.campaign.intel.events.CommerceBountyManager;
295import com.fs.starfarer.api.impl.campaign.intel.events.DisposableHostileActivityFleetManager;
296import com.fs.starfarer.api.impl.campaign.intel.events.HostileActivityEventIntel;
297import com.fs.starfarer.api.impl.campaign.intel.events.HostileActivityManager;
298import com.fs.starfarer.api.impl.campaign.intel.events.ht.HTFactorTracker;
299import com.fs.starfarer.api.impl.campaign.intel.inspection.HegemonyInspectionManager;
300import com.fs.starfarer.api.impl.campaign.intel.misc.BreadcrumbIntel;
301import com.fs.starfarer.api.impl.campaign.intel.misc.BreadcrumbIntelV2;
302import com.fs.starfarer.api.impl.campaign.intel.misc.CargoPodsIntel;
303import com.fs.starfarer.api.impl.campaign.intel.misc.CommSnifferIntel;
304import com.fs.starfarer.api.impl.campaign.intel.misc.CryosleeperIntel;
305import com.fs.starfarer.api.impl.campaign.intel.misc.DistressCallIntel;
306import com.fs.starfarer.api.impl.campaign.intel.misc.GateIntel;
307import com.fs.starfarer.api.impl.campaign.intel.misc.HypershuntIntel;
308import com.fs.starfarer.api.impl.campaign.intel.misc.LuddicShrineIntel;
309import com.fs.starfarer.api.impl.campaign.intel.misc.ProductionReportIntel;
310import com.fs.starfarer.api.impl.campaign.intel.misc.RemnantNexusIntel;
311import com.fs.starfarer.api.impl.campaign.intel.misc.SalvorsTallyIntel;
312import com.fs.starfarer.api.impl.campaign.intel.misc.SimUpdateIntel;
313import com.fs.starfarer.api.impl.campaign.intel.misc.TradeFleetDepartureIntel;
314import com.fs.starfarer.api.impl.campaign.intel.misc.WarningBeaconIntel;
315import com.fs.starfarer.api.impl.campaign.intel.misc.WormholeIntel;
316import com.fs.starfarer.api.impl.campaign.intel.punitive.PunitiveExpeditionManager;
317import com.fs.starfarer.api.impl.campaign.intel.punitive.PunitiveExpeditionManager.PunExData;
318import com.fs.starfarer.api.impl.campaign.intel.raid.RaidIntel;
319import com.fs.starfarer.api.impl.campaign.missions.DelayedFleetEncounter;
320import com.fs.starfarer.api.impl.campaign.missions.academy.GAAtTheGates;
321import com.fs.starfarer.api.impl.campaign.missions.academy.GATransverseJump;
322import com.fs.starfarer.api.impl.campaign.missions.cb.BaseCustomBounty;
323import com.fs.starfarer.api.impl.campaign.missions.cb.BaseCustomBounty.AggregateBountyData;
324import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission;
325import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission.DefeatTriggerAdded;
326import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission.ImportanceData;
327import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission.StageConnection;
328import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission.StageData;
329import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission.VariableSet;
330import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMissionCreator;
331import com.fs.starfarer.api.impl.campaign.missions.hub.BaseMissionHub;
332import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionBarEventWrapper;
333import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers;
334import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.MakeNonStoryCriticalAction;
335import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.SetFleetFlagAction;
336import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
337import com.fs.starfarer.api.impl.campaign.missions.hub.MissionTrigger;
338import com.fs.starfarer.api.impl.campaign.missions.hub.TriggerFleetAssignmentAI;
339import com.fs.starfarer.api.impl.campaign.plog.OfficerSkillGainRecord;
340import com.fs.starfarer.api.impl.campaign.plog.PLStatCargo;
341import com.fs.starfarer.api.impl.campaign.plog.PLStatColonies;
342import com.fs.starfarer.api.impl.campaign.plog.PLStatCredits;
343import com.fs.starfarer.api.impl.campaign.plog.PLStatCrew;
344import com.fs.starfarer.api.impl.campaign.plog.PLStatFleet;
345import com.fs.starfarer.api.impl.campaign.plog.PLStatFuel;
346import com.fs.starfarer.api.impl.campaign.plog.PLStatLevel;
347import com.fs.starfarer.api.impl.campaign.plog.PLStatMarines;
348import com.fs.starfarer.api.impl.campaign.plog.PLStatSupplies;
349import com.fs.starfarer.api.impl.campaign.plog.PLTextEntry;
350import com.fs.starfarer.api.impl.campaign.plog.PlaythroughLog;
351import com.fs.starfarer.api.impl.campaign.plog.SModRecord;
352import com.fs.starfarer.api.impl.campaign.procgen.DefenderDataOverride;
353import com.fs.starfarer.api.impl.campaign.procgen.ProcgenUsedNames;
354import com.fs.starfarer.api.impl.campaign.procgen.SectorProcGen;
355import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
356import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI;
357import com.fs.starfarer.api.impl.campaign.procgen.themes.OmegaOfficerGeneratorPlugin;
358import com.fs.starfarer.api.impl.campaign.procgen.themes.PKDefenderPluginImpl;
359import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantAssignmentAI;
360import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantOfficerGeneratorPlugin;
361import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantSeededFleetManager;
362import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantSeededFleetManager.RemnantFleetInteractionConfigGen;
363import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantStationFleetManager;
364import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantThemeGenerator.RemnantStationInteractionConfigGen;
365import com.fs.starfarer.api.impl.campaign.procgen.themes.RouteFleetAssignmentAI;
366import com.fs.starfarer.api.impl.campaign.procgen.themes.RuinsFleetRouteManager;
367import com.fs.starfarer.api.impl.campaign.procgen.themes.ScavengerFleetAssignmentAI;
368import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageGenFromSeed.SalvageDefenderModificationPluginImpl;
369import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BaseSalvageSpecial.ExtraSalvage;
370import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BlueprintSpecial.BlueprintSpecialData;
371import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BreadcrumbSpecial.BreadcrumbSpecialData;
372import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.CargoManifestSpecial.CargoManifestSpecialData;
373import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.DomainSurveyDerelictSpecial;
374import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.DomainSurveyDerelictSpecial.DomainSurveyDerelictSpecialData;
375import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.DomainSurveyDerelictSpecial.SpecialType;
376import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.PerShipData;
377import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.ShipCondition;
378import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.ShipRecoverySpecialData;
379import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.SleeperPodsSpecial.SleeperPodsSpecialData;
380import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.SleeperPodsSpecial.SleeperSpecialType;
381import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.SurveyDataSpecial.SurveyDataSpecialData;
382import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.SurveyDataSpecial.SurveyDataSpecialType;
383import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.TopographicDataSpecial.TopographicDataSpecialData;
384import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.TransmitterTrapSpecial.TransmitterTrapSpecialData;
385import com.fs.starfarer.api.impl.campaign.shared.CommodityStatTracker.CommodityStats;
386import com.fs.starfarer.api.impl.campaign.shared.PlayerTradeDataForSubmarket;
387import com.fs.starfarer.api.impl.campaign.shared.PlayerTradeProfitabilityData;
388import com.fs.starfarer.api.impl.campaign.shared.PlayerTradeProfitabilityData.CommodityData;
389import com.fs.starfarer.api.impl.campaign.shared.ReputationChangeTracker.ReputationChangeData;
390import com.fs.starfarer.api.impl.campaign.shared.SharedData;
391import com.fs.starfarer.api.impl.campaign.skills.FieldRepairsScript;
392import com.fs.starfarer.api.impl.campaign.submarkets.BlackMarketPlugin;
393import com.fs.starfarer.api.impl.campaign.submarkets.LocalResourcesSubmarketPlugin;
394import com.fs.starfarer.api.impl.campaign.submarkets.OpenMarketPlugin;
395import com.fs.starfarer.api.impl.campaign.terrain.AsteroidBeltTerrainPlugin;
396import com.fs.starfarer.api.impl.campaign.terrain.AsteroidBeltTerrainPlugin.AsteroidBeltParams;
397import com.fs.starfarer.api.impl.campaign.terrain.AsteroidFieldTerrainPlugin;
398import com.fs.starfarer.api.impl.campaign.terrain.AsteroidFieldTerrainPlugin.AsteroidFieldParams;
399import com.fs.starfarer.api.impl.campaign.terrain.AsteroidImpact;
400import com.fs.starfarer.api.impl.campaign.terrain.AsteroidSource;
401import com.fs.starfarer.api.impl.campaign.terrain.AuroraRenderer;
402import com.fs.starfarer.api.impl.campaign.terrain.BaseRingTerrain;
403import com.fs.starfarer.api.impl.campaign.terrain.BaseRingTerrain.RingParams;
404import com.fs.starfarer.api.impl.campaign.terrain.BaseTerrain;
405import com.fs.starfarer.api.impl.campaign.terrain.CRLossPerSecondBuff;
406import com.fs.starfarer.api.impl.campaign.terrain.CRRecoveryBuff;
407import com.fs.starfarer.api.impl.campaign.terrain.DebrisFieldTerrainPlugin;
408import com.fs.starfarer.api.impl.campaign.terrain.DebrisFieldTerrainPlugin.DebrisFieldParams;
409import com.fs.starfarer.api.impl.campaign.terrain.EventHorizonPlugin;
410import com.fs.starfarer.api.impl.campaign.terrain.FlareManager;
411import com.fs.starfarer.api.impl.campaign.terrain.FlareManager.Flare;
412import com.fs.starfarer.api.impl.campaign.terrain.HyperStormBoost;
413import com.fs.starfarer.api.impl.campaign.terrain.HyperspaceTerrainPlugin;
414import com.fs.starfarer.api.impl.campaign.terrain.HyperspaceTerrainPlugin.CellStateTracker;
415import com.fs.starfarer.api.impl.campaign.terrain.MagneticFieldTerrainPlugin;
416import com.fs.starfarer.api.impl.campaign.terrain.MagneticFieldTerrainPlugin.MagneticFieldParams;
417import com.fs.starfarer.api.impl.campaign.terrain.MaxBurnBuff;
418import com.fs.starfarer.api.impl.campaign.terrain.NebulaTerrainPlugin;
419import com.fs.starfarer.api.impl.campaign.terrain.PeakPerformanceBuff;
420import com.fs.starfarer.api.impl.campaign.terrain.PulsarBeamTerrainPlugin;
421import com.fs.starfarer.api.impl.campaign.terrain.RadioChatterTerrainPlugin;
422import com.fs.starfarer.api.impl.campaign.terrain.RadioChatterTerrainPlugin.RadioChatterParams;
423import com.fs.starfarer.api.impl.campaign.terrain.RingSystemTerrainPlugin;
424import com.fs.starfarer.api.impl.campaign.terrain.StarCoronaAkaMainyuTerrainPlugin;
425import com.fs.starfarer.api.impl.campaign.terrain.StarCoronaTerrainPlugin;
426import com.fs.starfarer.api.impl.campaign.terrain.StarCoronaTerrainPlugin.CoronaParams;
427import com.fs.starfarer.api.impl.campaign.tutorial.CampaignTutorialScript;
428import com.fs.starfarer.api.impl.campaign.tutorial.CampaignTutorialScript.CampaignTutorialStage;
429import com.fs.starfarer.api.impl.campaign.tutorial.GalatiaMarketScript;
430import com.fs.starfarer.api.impl.campaign.tutorial.GalatianAcademyStipend;
431import com.fs.starfarer.api.impl.campaign.tutorial.RogueMinerMiscFleetManager;
432import com.fs.starfarer.api.impl.campaign.tutorial.SaveNagScript;
433import com.fs.starfarer.api.impl.campaign.tutorial.TutorialLeashAssignmentAI;
434import com.fs.starfarer.api.impl.campaign.tutorial.TutorialMissionEvent.TutorialMissionStage;
435import com.fs.starfarer.api.impl.campaign.tutorial.TutorialMissionIntel;
436import com.fs.starfarer.api.impl.campaign.velfield.BoundingBox;
437import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamManager;
438import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamManager.AddedStream;
439import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamManager.StreamData;
440import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2;
441import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2.SlipstreamParams2;
442import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2.SlipstreamSegment;
443import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamVisibilityManager;
444import com.fs.starfarer.api.impl.campaign.world.GateHaulerLocation;
445import com.fs.starfarer.api.impl.campaign.world.Limbo;
446import com.fs.starfarer.api.impl.campaign.world.NamelessRock;
447import com.fs.starfarer.api.impl.campaign.world.TTBlackSite;
448import com.fs.starfarer.api.impl.campaign.world.TTBlackSite.ZigFIDConfig;
449import com.fs.starfarer.api.impl.campaign.world.ZigLeashAssignmentAI;
450import com.fs.starfarer.api.impl.codex.CodexUnlocker;
451import com.fs.starfarer.api.impl.combat.dweller.ShroudedEjectaAI;
452import com.fs.starfarer.api.impl.combat.dweller.ShroudedVortexAI;
453import com.fs.starfarer.api.impl.combat.threat.DisposableThreatFleetManager;
454import com.fs.starfarer.api.impl.combat.threat.ThreatSwarmAI;
455import com.fs.starfarer.api.loading.CampaignPingSpec;
456import com.fs.starfarer.api.plugins.impl.CoreBuildObjectiveTypePicker;
457import com.fs.starfarer.api.util.DelayedActionScript;
458import com.fs.starfarer.api.util.FaderUtil;
459import com.fs.starfarer.api.util.FlickerUtil;
460import com.fs.starfarer.api.util.IntervalUtil;
461import com.fs.starfarer.api.util.Misc;
462import com.fs.starfarer.api.util.RollingAverageTracker;
463import com.fs.starfarer.api.util.TimeoutTracker;
464import com.fs.starfarer.api.util.TimeoutTracker.ItemData;
465import com.thoughtworks.xstream.XStream;
466
468
469 @Override
470 public void onGameLoad(boolean newGame) {
472
473// MarketAPI market = Global.getSector().getEconomy().getMarket("eochu_bres");
474// if (market != null) {
475// PersonAPI person = Global.getFactory().createPerson();
476// person.setId(People.GLAMOR_ROTANEV);
477// person.setFaction(Factions.TRITACHYON);
478// person.setGender(Gender.FEMALE);
479// person.setRankId(Ranks.SENIOR_EXECUTIVE);
480// person.setPostId(Ranks.POST_INTELLIGENCE_DIRECTOR);
481// person.setImportance(PersonImportance.VERY_HIGH);
482// person.getName().setFirst("Zunya");
483// person.getName().setLast("Glamor-Rotanev");
484// person.setPortraitSprite(Global.getSettings().getSpriteName("characters", person.getId()));
485// person.getStats().setSkillLevel(Skills.BULK_TRANSPORT, 1);
486// person.getStats().setSkillLevel(Skills.INDUSTRIAL_PLANNING, 1);
487// person.getStats().setSkillLevel(Skills.OFFICER_MANAGEMENT, 1);
488// person.addTag(Tags.CONTACT_TRADE);
489// person.addTag(Tags.CONTACT_MILITARY);
490// person.setVoice(Voices.BUSINESS);
491//
492// market.getCommDirectory().addPerson(person, 1); // second after Sun
493// market.getCommDirectory().getEntryForPerson(person).setHidden(true); // you'll hear from her people.
494// market.addPerson(person);
495// Global.getSector().getImportantPeople().addPerson(person);
496// }
497
498
499 StarSystemAPI limbo = Global.getSector().getStarSystem("Limbo");
500 if (limbo == null || !limbo.hasTag(Tags.SYSTEM_ABYSSAL)) {
504 }
505
506 if (Global.getSector().getStarSystem("nameless_rock_location") == null) {
508 }
509
510 // the token replacement generators don't get saved
511 // add them on every game load
513
514 if (!newGame) {
515 addJunk();
517 }
518
520
522
523// for (CampaignFleetAPI fleet : Global.getSector().getCurrentLocation().getFleets()) {
524// if (fleet.isPlayerFleet()) continue;
525// VisibilityLevel level = fleet.getVisibilityLevelToPlayerFleet();
526// if (level == VisibilityLevel.NONE) {
527// fleet.forceSensorFaderBrightness(0f);
528// }
529// }
530
532
534 }
535
536 public static void addMissingPeople() {
537 if (People.getPerson(People.REYNARD_HANNAN) == null) {
539 }
540 }
541
542 public static void verifyFactionData() {
543 for (FactionAPI faction : Global.getSector().getAllFactions()) {
544 verifyFactionData(faction);
545 }
546 }
547
548 public static void verifyFactionData(FactionAPI faction) {
549 for (String id : faction.getKnownShips()) {
550 if (Global.getSettings().getHullSpec(id) == null) {
551 throw new RuntimeException("Hull with id [" + id + "] not found for faction [" + faction.getId() + "]");
552 }
553 }
554 for (String id : faction.getKnownHullMods()) {
555 if (Global.getSettings().getHullModSpec(id) == null) {
556 throw new RuntimeException("Hullmod with id [" + id + "] not found for faction [" + faction.getId() + "]");
557 }
558 }
559 for (String id : faction.getKnownIndustries()) {
560 if (Global.getSettings().getIndustrySpec(id) == null) {
561 throw new RuntimeException("Industry with id [" + id + "] not found for faction [" + faction.getId() + "]");
562 }
563 }
564 for (String id : faction.getKnownFighters()) {
565 if (Global.getSettings().getFighterWingSpec(id) == null) {
566 throw new RuntimeException("Fighter wing with id [" + id + "] not found for faction [" + faction.getId() + "]");
567 }
568 }
569 for (String id : faction.getKnownWeapons()) {
570 if (Global.getSettings().getWeaponSpec(id) == null) {
571 throw new RuntimeException("Weapon with id [" + id + "] not found for faction [" + faction.getId() + "]");
572 }
573 }
574
575 for (String id : new ArrayList<String>(faction.getDoctrine().getCommanderSkills())) {
576 if (Global.getSettings().getSkillSpec(id) == null) {
577 // making still-useful saves work... 9/15/2020
578 if (id.equals("fighter_doctrine")) {
579 faction.getDoctrine().getCommanderSkills().remove(id);
580 } else {
581 throw new RuntimeException("Commander skill with id [" + id + "] not found for faction [" + faction.getId() + "]");
582 }
583 }
584 }
585 for (String id : new ArrayList<String>(faction.getDoctrine().getOfficerSkills())) {
586 if (Global.getSettings().getSkillSpec(id) == null) {
587 throw new RuntimeException("Officer skill with id [" + id + "] not found for faction [" + faction.getId() + "]");
588 }
589 }
590 }
591
592 protected void addScriptsIfNeeded() {
594 //ConditionManager.getInstance();
595
596 SectorAPI sector = Global.getSector();
597
598
599 ListenerManagerAPI listeners = sector.getListenerManager();
600
601 if (Global.getSettings().isDevMode()) {
602 listeners.addListener(new TestIndustryOptionProvider(), true);
603 }
604
607 }
608// if (!listeners.hasListenerOfClass(FleetLogIntelCreator.class)) {
609// listeners.addListener(new FleetLogIntelCreator(), true);
610// }
611
612 if (!listeners.hasListenerOfClass(CryosleeperFactor.class)) {
613 listeners.addListener(new CryosleeperFactor(), true);
614 }
615 if (!listeners.hasListenerOfClass(CoronalTapFactor.class)) {
616 listeners.addListener(new CoronalTapFactor(), true);
617 }
618 if (!listeners.hasListenerOfClass(SlipstreamVisibilityManager.class)) {
619 listeners.addListener(new SlipstreamVisibilityManager(), true);
620 }
621 if (!listeners.hasListenerOfClass(CodexUnlocker.class)) {
622 listeners.addListener(new CodexUnlocker(), true);
623 }
624
625// if (!sector.hasScript(SlipstreamVisibilityManager.class)) {
626// sector.addScript(new SlipstreamVisibilityManager());
627// }
628
629
631 if (!plugins.hasPlugin(PKDefenderPluginImpl.class)) {
632 plugins.addPlugin(new PKDefenderPluginImpl(), true);
633 }
634 if (!plugins.hasPlugin(SalvageDefenderModificationPluginImpl.class)) {
635 plugins.addPlugin(new SalvageDefenderModificationPluginImpl(), true);
636 }
637
638 CoreDiscoverEntityPlugin discoverPlugin = null;
639 if (!plugins.hasPlugin(CoreDiscoverEntityPlugin.class)) {
640 discoverPlugin = new CoreDiscoverEntityPlugin();
641 plugins.addPlugin(discoverPlugin, true);
642 } else {
643 discoverPlugin = (CoreDiscoverEntityPlugin) plugins.getPluginsOfClass(CoreDiscoverEntityPlugin.class).get(0);
644 }
645 if (!listeners.hasListenerOfClass(CoreDiscoverEntityPlugin.class)) {
646 listeners.addListener(discoverPlugin, true);
647 }
648
649
650 if (!plugins.hasPlugin(CoreBuildObjectiveTypePicker.class)) {
651 plugins.addPlugin(new CoreBuildObjectiveTypePicker(), true);
652 }
653 if (!plugins.hasPlugin(AbandonMarketPluginImpl.class)) {
654 plugins.addPlugin(new AbandonMarketPluginImpl(), true);
655 }
656 if (!plugins.hasPlugin(StabilizeMarketPluginImpl.class)) {
657 plugins.addPlugin(new StabilizeMarketPluginImpl(), true);
658 }
659 if (!plugins.hasPlugin(RemnantOfficerGeneratorPlugin.class)) {
660 plugins.addPlugin(new RemnantOfficerGeneratorPlugin(), true);
661 }
662 if (!plugins.hasPlugin(OmegaOfficerGeneratorPlugin.class)) {
663 plugins.addPlugin(new OmegaOfficerGeneratorPlugin(), true);
664 }
665// if (!plugins.hasPlugin(PlayerFleetPersonnelTracker.class)) {
666// plugins.addPlugin(new PlayerFleetPersonnelTracker(), false);
667// }
668
671
672
673 if (!sector.hasScript(StrandedGiveTJScript.class)) {
674 sector.addScript(new StrandedGiveTJScript());
675 }
676 if (!sector.hasScript(PersonalFleetHoracioCaden.class)) {
678 }
679 if (!sector.hasScript(PersonalFleetOxanaHyder.class)) {
681 }
682 if (!sector.hasScript(SDFHegemony.class)) {
683 sector.addScript(new SDFHegemony());
684 }
685 if (!sector.hasScript(SDFLeague.class)) {
686 sector.addScript(new SDFLeague());
687 }
688 if (!sector.hasScript(SDFTriTachyon.class)) {
689 sector.addScript(new SDFTriTachyon());
690 }
691 if (!sector.hasScript(SDFLuddicChurch.class)) {
692 sector.addScript(new SDFLuddicChurch());
693 }
694// if (!sector.hasScript(PilgrimageFleetRouteManager.class)) {
695// sector.addScript(new PilgrimageFleetRouteManager());
696// }
697 if (!sector.hasScript(MiscFleetRouteManager.class)) {
698 sector.addScript(new MiscFleetRouteManager());
699 }
700 if (!sector.hasScript(EncounterManager.class)) {
701 sector.addScript(new EncounterManager());
702 }
703 if (!sector.hasScript(SlipstreamManager.class)) {
704 sector.addScript(new SlipstreamManager());
705 }
706 if (!sector.hasScript(SensorGhostManager.class)) {
707 sector.addScript(new SensorGhostManager());
708 }
709 if (!sector.hasScript(OfficerManagerEvent.class)) {
710 sector.addScript(new OfficerManagerEvent());
711 }
712 if (!sector.hasScript(FieldRepairsScript.class)) {
713 sector.addScript(new FieldRepairsScript());
714 }
715 if (!sector.hasScript(WarSimScript.class)) {
716 sector.addScript(new WarSimScript());
717 }
718 if (!sector.hasScript(PersonBountyManager.class)) {
719 sector.addScript(new PersonBountyManager());
720 }
721 if (!sector.hasScript(SystemBountyManager.class)) {
722 sector.addScript(new SystemBountyManager());
723 }
724
725 if (!sector.hasScript(PirateBaseManager.class)) {
726 sector.addScript(new PirateBaseManager());
727 }
728 if (!sector.hasScript(PlayerRelatedPirateBaseManager.class)) {
730 }
731
732 if (!sector.hasScript(LuddicPathBaseManager.class)) {
733 sector.addScript(new LuddicPathBaseManager());
734 }
735// if (!sector.hasScript(HegemonyInspectionManager.class)) {
736// sector.addScript(new HegemonyInspectionManager());
737// }
738 if (!sector.hasScript(PunitiveExpeditionManager.class)) {
740 }
741 if (!sector.hasScript(DecivTracker.class)) {
742 sector.addScript(new DecivTracker());
743 }
744
747 }
748 if (!sector.hasScript(DisposableThreatFleetManager.class)) {
750 }
751 if (!sector.hasScript(HostileActivityManager.class)) {
752 sector.addScript(new HostileActivityManager());
753 }
754 if (!sector.hasScript(HTFactorTracker.class)) {
755 sector.addScript(new HTFactorTracker());
756 }
757 if (!sector.hasScript(CommerceBountyManager.class)) {
758 sector.addScript(new CommerceBountyManager());
759 }
760
761 if (!sector.hasScript(FactionHostilityManager.class)) {
763
767 }
768
769
770 if (!sector.hasScript(GenericMissionManager.class)) {
771 sector.addScript(new GenericMissionManager());
772 }
774// Replaced with bar/contact com.fs.starfarer.api.impl.campaign.missions.ProcurementMission
775// if (!manager.hasMissionCreator(ProcurementMissionCreator.class)) {
776// manager.addMissionCreator(new ProcurementMissionCreator());
777// }
778 if (!manager.hasMissionCreator(AnalyzeEntityIntelCreator.class)) {
780 }
781 if (!manager.hasMissionCreator(SurveyPlanetIntelCreator.class)) {
783 }
784
785 addBarEvents();
786
787 if (!sector.hasScript(SmugglingScanScript.class)) {
788 sector.addScript(new SmugglingScanScript());
789 }
790 if (!sector.hasScript(HasslePlayerScript.class)) {
791 sector.addScript(new HasslePlayerScript());
792 }
793
795
800
801 }
802
803 protected void addBarEvents() {
804 SectorAPI sector = Global.getSector();
805 if (!sector.hasScript(PortsideBarData.class)) {
806 sector.addScript(new PortsideBarData());
807 }
808 if (!sector.hasScript(BarEventManager.class)) {
809 sector.addScript(new BarEventManager());
810 }
811
815 }
818 }
821 }
822 //if (!bar.hasEventCreator(MercsOnTheRunBarEventCreator.class)) {
823 // bar.addEventCreator(new MercsOnTheRunBarEventCreator());
824 //}
827 }
830 }
833 }
836 }
839 }
842 }
845 }
848 }
849
850 }
851
852 @Override
853 public void onNewGame() {
854 junkList.clear();
855
859 // sensor array is added in a procgen system, so have to do it after procgen
860 //new NamelessRock().generate(Global.getSector());
861 }
862
863
864 @Override
866
867 // sensor array is added in a procgen system, so have to do it here
869
870 new CustomFleets().spawn();
871
873 if (script instanceof BaseIntelPlugin) {
874 ((BaseIntelPlugin)script).setPostingLocation(null);
876 }
877
879 if (script instanceof BaseIntelPlugin) {
880 ((BaseIntelPlugin)script).setPostingLocation(null);
882 }
883
884
885
888 intel.setElapsedDays(intel.getElapsedDays() * (float) Math.random() * 0.25f);
889 }
890
891 // only leave bounties at ancyra, jangala, and one other market at game start
892 boolean first = true;
895 if (intel.getMarket().getId().equals("ancyra_market") ||
896 intel.getMarket().getId().equals("jangala")) {
897 intel.setElapsedDays(intel.getElapsedDays() * (float) Math.random() * 0.25f);
898 continue;
899 }
900
901 if (first) {
902 first = false;
903 intel.setElapsedDays(intel.getElapsedDays() * (float) Math.random() * 0.25f);
904 continue;
905 }
906
907 intel.endImmediately();
908 }
909
910
911 MarketAPI jangala = Global.getSector().getEconomy().getMarket("jangala");
912 if (jangala != null) {
914 }
915
916
917// CampaignEventManagerAPI eventManager = Global.getSector().getEventManager();
918
919
920
921// SectorEntityToken jangalaPlanet = Global.getSector().getEntityById("jangala");
922// Global.getSector().getMissionBoard().makeAvailableAt(new TestCampaignMission(jangalaPlanet), "jangala");
923// FactionAPI hegemony = Global.getSector().getFaction(Factions.HEGEMONY);
924// jangalaPlanet.initCommDirectory();
925// jangalaPlanet.getCommDirectory().addPerson(hegemony.createRandomPerson());
926// jangalaPlanet.getCommDirectory().addPerson(hegemony.createRandomPerson());
927// jangalaPlanet.getCommDirectory().addPerson(hegemony.createRandomPerson());
928// jangalaPlanet.getCommDirectory().addPerson(hegemony.createRandomPerson());
929
930// WeightedRandomPicker<MarketAPI> picker = new WeightedRandomPicker<MarketAPI>();
931// for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
932// //if (market.getFactionId().equals(Factions.PIRATES)) {
933// if (market.getFaction().getCustom().optBoolean(Factions.CUSTOM_EXEMPT_FOOD_SHORTAGES)) {
934// continue;
935// }
936// EventProbabilityAPI ep = eventManager.getProbability(Events.FOOD_SHORTAGE, market);
937// if (eventManager.isOngoing(ep)) continue;
938// if (ep.getProbability() < 0.05f) continue;
939//
940// picker.add(market, ep.getProbability());
941// }
942//
943// MarketAPI pick = picker.pick();
944// if (pick != null) {
945// eventManager.startEvent(new CampaignEventTarget(pick), Events.FOOD_SHORTAGE, null);
946// }
947
948// if (Global.getSettings().getBoolean("runDefaultEasyStartScript") && Misc.isEasy()) {
949// easyStart();
950// }
951
952// SectorAPI sector = Global.getSector();
953// if (Global.getSector().isInNewGameAdvance()) return;
954//
955// // teleport player to start on top of the planet
956// SectorEntityToken entity = sector.getEntityById("culann");
957// CampaignFleetAPI playerFleet = sector.getPlayerFleet();
958// Vector2f loc = entity.getLocation();
959// playerFleet.setLocation(loc.x, loc.y);
960 }
961
962// protected void easyStart() {
963// PersonAPI officer = OfficerManagerEvent.createOfficer(Global.getSector().getPlayerFaction(), 1, true);
964// officer.setPersonality(Personalities.CAUTIOUS);
965// CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
966// playerFleet.getFleetData().addOfficer(officer);
967// for (FleetMemberAPI member : playerFleet.getFleetData().getMembersListCopy()) {
968// if (!member.isFlagship() && member.getCaptain().isDefault()) {
969// member.setCaptain(officer);
970// break;
971// }
972// }
973// }
974
975 @Override
977 //SharedData.getData().getMarketsWithoutPatrolSpawn().add("jangala");
978// for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
979// SharedData.getData().getMarketsWithoutPatrolSpawn().add(market.getId());
980// }
981
982 addJunk();
983
984 // Do not need to regen asteroids - they've already been generated during sector generation
985 // Only need to regenerate on game load, since they're (mostly) not persisted.
986 //regenAsteroids();
987
988 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
989 //market.getCommDirectory().addMissionBoard();
990
991 if (market.getContainingLocation() != null && market.getPrimaryEntity() != null) {
992 float radius = 300f + market.getSize() * 200f;
993 market.getContainingLocation().addRadioChatter(market.getPrimaryEntity(), radius);
994 }
995 }
996
997 MarketAPI umbra = Global.getSector().getEconomy().getMarket("umbra");
998 if (umbra != null && umbra.hasIndustry(Industries.SPACEPORT)) {
1000 }
1001
1002
1004
1006
1008
1010
1012
1013// Global.getSector().getStarSystem("hybrasil").getLocation().set(-10000, -10000);
1014// Global.getSector().getHyperspace().updateAllOrbits();
1015
1016 //addBaseBlueprints();
1017 }
1018
1020 String id = Missions.KALLICHORE;
1021 Misc.makeStoryCritical("eochu_bres", id);
1022 Misc.makeStoryCritical("port_tse", id);
1023 Misc.makeStoryCritical("new_maxios", id);
1024 Misc.makeStoryCritical("coatl", id);
1025
1026 id = Missions.COUREUSE;
1027 Misc.makeStoryCritical("laicaille_habitat", id);
1028 Misc.makeStoryCritical("eochu_bres", id);
1029 Misc.makeStoryCritical("fikenhild", id);
1030 Misc.makeStoryCritical("station_kapteyn", id);
1031
1032 id = Missions.ZIGGURAT;
1033 Misc.makeStoryCritical("culann", id);
1034 Misc.makeStoryCritical("donn", id);
1035 Misc.makeStoryCritical("agreus", id);
1036 Misc.makeStoryCritical("eochu_bres", id);
1037 Misc.makeStoryCritical("port_tse", id);
1038
1039 id = Missions.GATES;
1040 Misc.makeStoryCritical("kazeron", id);
1041 Misc.makeStoryCritical("chicomoztoc", id);
1042 Misc.makeStoryCritical("epiphany", id);
1043 Misc.makeStoryCritical("fikenhild", id);
1044 Misc.makeStoryCritical("kantas_den", id);
1045
1047 Misc.makeStoryCritical("sindria", id);
1048 Misc.makeStoryCritical("volturn", id);
1049 Misc.makeStoryCritical("umbra", id);
1050
1052 Misc.makeStoryCritical("jangala", id);
1053 Misc.makeStoryCritical("hesperus", id);
1054 Misc.makeStoryCritical("gilead", id);
1055 Misc.makeStoryCritical("volturn", id);
1056
1058 Misc.makeStoryCritical("gilead", id);
1059 Misc.makeStoryCritical("chalcedon", id);
1060 Misc.makeStoryCritical("mazalot", id);
1061
1062 id = Missions.FALSE_IDOLS;
1063 Misc.makeStoryCritical("asher", id);
1064 Misc.makeStoryCritical("chalcedon", id);
1065 Misc.makeStoryCritical("olinadu", id);
1066 Misc.makeStoryCritical("kazeron", id);
1067 Misc.makeStoryCritical("gilead", id);
1068 Misc.makeStoryCritical("hesperus", id);
1069 Misc.makeStoryCritical("tartessus", id);
1070
1072 //Misc.makeStoryCritical("galatia_academy", id); // n/a
1073
1074 id = Missions.KANTA_LIBRE; // Like, not a real mission. Yet? Set so Kanta's Den doesn't deciv and break Stuff. -dgb
1075 Misc.makeStoryCritical("kantas_den", id);
1076 }
1077
1078 public void tagLuddicShrines() {
1079 // for LPP missions (and general interest, I'm sure.)
1084
1085 SectorEntityToken beholderStation = Global.getSector().getEntityById("beholder_station");
1086 if (beholderStation != null) {
1087 beholderStation.addTag(Tags.LUDDIC_SHRINE);
1088 }
1089
1091 if (killa != null) {
1092 killa.addTag(Tags.LUDDIC_SHRINE);
1093 }
1094
1095 }
1096
1097// protected void addBaseBlueprints() {
1098//
1099// Set<String> tags = new HashSet<String>();
1100// tags.add(Items.TAG_BASE_BP);
1101//
1102// List<String> ships = MultiBlueprintItemPlugin.getShipIds(tags);
1103// List<String> weapons = MultiBlueprintItemPlugin.getWeaponIds(tags);
1104// List<String> fighters = MultiBlueprintItemPlugin.getWingIds(tags);
1105//
1106// FactionAPI pf = Global.getSector().getPlayerFaction();
1107// for (String id : ships) {
1108// pf.addKnownShip(id);
1109// }
1110// for (String id : weapons) {
1111// pf.addKnownWeapon(id);
1112// }
1113// for (String id : fighters) {
1114// pf.addKnownFighter(id);
1115// }
1116// }
1117
1118 protected void updateKnownPlanets() {
1119 //Set<String> seen = new HashSet<String>();
1120 //Set<SectorEntityToken> gates = new LinkedHashSet<SectorEntityToken>();
1121 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1122 if (market.isPlanetConditionMarketOnly()) continue; // shouldn't be in the markets list in this case, but, well.
1123 if (market.getContainingLocation() instanceof StarSystemAPI) {
1124 StarSystemAPI system = (StarSystemAPI) market.getContainingLocation();
1125 system.setEnteredByPlayer(true);
1126 //String name = system.getName();
1127 //Misc.setAllPlanetsKnown(system);
1128 Misc.setAllPlanetsSurveyed(system, true);
1129 market.setSurveyLevel(SurveyLevel.FULL); // could also be a station, not a planet
1130 }
1131
1132// for (SectorEntityToken gate : market.getContainingLocation().getEntitiesWithTag(Tags.GATE)) {
1133// gates.add(gate);
1134// }
1135
1136 }
1137
1138 //for (SectorEntityToken gate : gates) {
1139// for (SectorEntityToken gate : Global.getSector().getEntitiesWithTag(Tags.GATE)) {
1140// if (gate.getCustomPlugin() instanceof GateEntityPlugin) {
1141// Global.getSector().getIntelManager().addIntel(new GateIntel(gate), true);
1142// }
1143// }
1144
1145
1146// for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1147// if (market.getContainingLocation() instanceof StarSystemAPI) {
1148// StarSystemAPI system = (StarSystemAPI) market.getContainingLocation();
1149// CoreScript.markSystemAsEntered(system, false);
1150// }
1151// }
1152
1153
1154 for (StarSystemAPI system : Global.getSector().getStarSystems()) {
1155// if (system.getName().toLowerCase().contains("galatia")) {
1156// System.out.println("wfwefwe234234");
1157// }
1158 boolean galatia = system.getBaseName().toLowerCase().equals("galatia");
1159 if (system.getTags().isEmpty() || galatia) {
1160 if (Misc.getMarketsInLocation(system).isEmpty() && !galatia) {
1161 system.addTag(Tags.THEME_CORE_UNPOPULATED);
1162 } else {
1163 system.addTag(Tags.THEME_CORE_POPULATED);
1164 }
1165 system.addTag(Tags.THEME_CORE);
1166 }
1167 }
1168 }
1169
1170
1171 public static void addJunk(MarketAPI market) {
1172 SectorEntityToken entity = market.getPrimaryEntity();
1173 if (entity == null) return;
1174 LocationAPI location = entity.getContainingLocation();
1175 if (location == null) return;
1176
1177 int numJunk = 5 + market.getSize() * 5;
1178 if (market.getSize() < 5) {
1179 numJunk = (int) Math.max(1, numJunk * 0.5f);
1180 }
1181 float radius = entity.getRadius() + 100f;
1182 float minOrbitDays = radius / 20;
1183 float maxOrbitDays = minOrbitDays + 10f;
1184
1185 location.addOrbitalJunk(entity,
1186 "orbital_junk", // from custom_entities.json
1187 numJunk, // num of junk
1188 12, 20, // min/max sprite size (assumes square)
1189 radius, // orbit radius
1190 //70, // orbit width
1191 110, // orbit width
1192 minOrbitDays, // min orbit days
1193 maxOrbitDays, // max orbit days
1194 60f, // min spin (degress/day)
1195 360f); // max spin (degrees/day)
1196 }
1197
1198 public static void addRuinsJunk(SectorEntityToken planet) {
1199 boolean r1 = planet.getMarket().hasCondition(Conditions.RUINS_SCATTERED);
1200 boolean r2 = planet.getMarket().hasCondition(Conditions.RUINS_WIDESPREAD);
1201 boolean r3 = planet.getMarket().hasCondition(Conditions.RUINS_EXTENSIVE);
1202 boolean r4 = planet.getMarket().hasCondition(Conditions.RUINS_VAST);
1203
1204 if (!(r1 || r2 || r3 || r4)) return;
1205
1206 int numJunk = 5;
1207 if (r2) numJunk += 5;
1208 if (r3) numJunk += 15;
1209 if (r4) numJunk += 40;
1210
1211 //System.out.println("With ruins: " + planet.getName() + ", " + location.getNameWithLowercaseType());
1212
1213 float radius = planet.getRadius() + 100f;
1214 float minOrbitDays = radius / 20;
1215 float maxOrbitDays = minOrbitDays + 10f;
1216
1217 planet.getContainingLocation().addOrbitalJunk(planet,
1218 "orbital_junk", // from custom_entities.json
1219 numJunk, // num of junk
1220 12, 20, // min/max sprite size (assumes square)
1221 radius, // orbit radius
1222 //70, // orbit width
1223 110, // orbit width
1224 minOrbitDays, // min orbit days
1225 maxOrbitDays, // max orbit days
1226 60f, // min spin (degress/day)
1227 360f); // max spin (degrees/day)
1228 }
1229
1230 protected void addJunk() {
1231 junkList.clear();
1232 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1233 addJunk(market);
1234 }
1235
1237 LocationAPI location = planet.getContainingLocation();
1238 if (location == null) continue;
1239
1240 if (planet.getMarket() == null || !planet.getMarket().isPlanetConditionMarketOnly()) continue;
1241
1242 addRuinsJunk(planet);
1243 }
1244 }
1245
1246 protected void regenAsteroids() {
1248 for (CampaignTerrainAPI terrain : loc.getTerrainCopy()) {
1249 if (terrain.getPlugin() instanceof AsteroidSource) {
1250 AsteroidSource source = (AsteroidSource) terrain.getPlugin();
1251 source.regenerateAsteroids();
1252 }
1253 }
1254 }
1255 }
1256
1257
1258 protected Map<SectorEntityToken, LocationAPI> asteroidList = new HashMap<SectorEntityToken, LocationAPI>();
1259 protected Map<SectorEntityToken, LocationAPI> junkList = new HashMap<SectorEntityToken, LocationAPI>();
1260 @Override
1261 public void beforeGameSave() {
1262 junkList.clear();
1263// Set<LocationAPI> seen = new HashSet<LocationAPI>();
1264// for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1265// LocationAPI loc = market.getContainingLocation();
1266// if (loc == null || seen.contains(loc)) continue;
1267// seen.add(loc);
1269 for (SectorEntityToken junk : loc.getEntitiesWithTag(Tags.ORBITAL_JUNK)) {
1270 loc.removeEntity(junk);
1271 junkList.put(junk, loc);
1272 }
1273 }
1274
1275 //int count = 0;
1276 asteroidList.clear();
1278 for (SectorEntityToken asteroid : new ArrayList<SectorEntityToken>(loc.getAsteroids())) {
1279 //count++;
1280 AsteroidSource source = Misc.getAsteroidSource(asteroid);
1281 if (source == null || !asteroid.getMemoryWithoutUpdate().isEmpty()) {
1282 if (source != null) {
1283 source.reportAsteroidPersisted(asteroid);
1284 Misc.clearAsteroidSource(asteroid);
1285 }
1286 continue;
1287 } else {
1288 asteroidList.put(asteroid, loc);
1289 loc.removeEntity(asteroid);
1290 }
1291 }
1292 }
1293 //System.out.println("COUNT: " + count);
1294 //Global.getSector().getEntityById(new ArrayList<SectorEntityToken>(asteroidList.keySet()).get(4000).getId())
1296 }
1297
1298
1299 protected void econPreSaveCleanup() {
1300 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1301 for (Industry ind : market.getIndustries()) {
1302 ind.doPreSaveCleanup();
1303 }
1304 }
1305 }
1306 public static void econPostSaveRestore() {
1307
1308 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1309 for (Industry ind : market.getIndustries()) {
1310 ind.doPostSaveRestore();
1311 }
1312 }
1313
1314 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1315 market.reapplyConditions();
1316 market.reapplyIndustries();
1317 }
1318 }
1319
1320 @Override
1321 public void afterGameSave() {
1324 }
1325
1326 @Override
1327 public void onGameSaveFailed() {
1330 }
1331
1332
1333
1334 protected void restoreRemovedEntities() {
1335 for (SectorEntityToken junk : junkList.keySet()) {
1336 ((LocationAPI)junkList.get(junk)).addEntity(junk);
1337 }
1338 junkList.clear();
1339 for (SectorEntityToken asteroid : asteroidList.keySet()) {
1340 ((LocationAPI)asteroidList.get(asteroid)).addEntity(asteroid);
1341 }
1342 asteroidList.clear();
1343 }
1344
1345
1346
1347 private void initSlipstream() {
1348// for (StarSystemAPI system : Global.getSector().getStarSystems()) {
1349// SectorEntityToken slipstream = system.addTerrain(Terrain.SLIPSTREAM, null);
1350// slipstream.getLocation().set(0, 0);
1351// system.getPersistentData().put(SlipstreamTerrainPlugin.LOCATION_SLIPSTREAM_KEY, slipstream);
1352// }
1353// SectorEntityToken slipstream = Global.getSector().getHyperspace().addTerrain(Terrain.SLIPSTREAM, null);
1354// slipstream.getLocation().set(0, 0);
1355// Global.getSector().getHyperspace().getPersistentData().put(SlipstreamTerrainPlugin.LOCATION_SLIPSTREAM_KEY, slipstream);
1356 }
1357
1358 public static void createInitialPeople(MarketAPI market, Random random) {
1360
1361 boolean addedPerson = false;
1362
1363 PersonAPI admin = null;
1364
1365 LinkedHashSet<PersonAPI> randomPeople = new LinkedHashSet<PersonAPI>();
1366
1367
1370 String rankId = Ranks.GROUND_MAJOR;
1371 if (market.getSize() >= 6) {
1372 rankId = Ranks.GROUND_GENERAL;
1373 } else if (market.getSize() >= 4) {
1374 rankId = Ranks.GROUND_COLONEL;
1375 }
1376 person.setRankId(rankId);
1378 if (market.getSize() >= 8) {
1380 } else if (market.getSize() >= 6) {
1382 } else {
1384 }
1386
1387 market.getCommDirectory().addPerson(person);
1388 market.addPerson(person);
1389 ip.addPerson(person);
1390 ip.getData(person).getLocation().setMarket(market);
1391 ip.checkOutPerson(person, "permanent_staff");
1392 addedPerson = true;
1393 randomPeople.add(person);
1394 }
1395
1396 boolean hasStation = false;
1397 for (Industry curr : market.getIndustries()) {
1398 if (curr.getSpec().hasTag(Industries.TAG_STATION)) {
1399 hasStation = true;
1400 break;
1401 }
1402 }
1403 if (hasStation) {
1405 String rankId = Ranks.SPACE_COMMANDER;
1406 if (market.getSize() >= 6) {
1407 rankId = Ranks.SPACE_ADMIRAL;
1408 } else if (market.getSize() >= 4) {
1409 rankId = Ranks.SPACE_CAPTAIN;
1410 }
1411 person.setRankId(rankId);
1413
1414 if (market.getSize() >= 8) {
1416 } else if (market.getSize() >= 6) {
1418 } else {
1420 }
1421
1423
1424 market.getCommDirectory().addPerson(person);
1425 market.addPerson(person);
1426 ip.addPerson(person);
1427 ip.getData(person).getLocation().setMarket(market);
1428 ip.checkOutPerson(person, "permanent_staff");
1429 addedPerson = true;
1430 randomPeople.add(person);
1431
1432 if (market.getPrimaryEntity().hasTag(Tags.STATION)) {
1433 admin = person;
1434 }
1435 }
1436
1437 if (market.hasSpaceport()) {
1439 //person.setRankId(Ranks.SPACE_CAPTAIN);
1441
1442 if (market.getSize() >= 8) {
1444 } else if (market.getSize() >= 6) {
1446 } else if (market.getSize() >= 4) {
1448 } else {
1450 }
1451
1452 person.addTag(Tags.CONTACT_TRADE);
1453
1454 market.getCommDirectory().addPerson(person);
1455 market.addPerson(person);
1456 ip.addPerson(person);
1457 ip.getData(person).getLocation().setMarket(market);
1458 ip.checkOutPerson(person, "permanent_staff");
1459 addedPerson = true;
1460 randomPeople.add(person);
1461 }
1462
1463 if (addedPerson) {
1467
1468 if (market.getSize() >= 6) {
1470 } else if (market.getSize() >= 4) {
1472 } else {
1474 }
1475
1477 person.addTag(Tags.CONTACT_TRADE);
1478 if (StarSystemGenerator.random.nextFloat() < 0.2f) {
1480 }
1481
1482 market.getCommDirectory().addPerson(person);
1483 market.addPerson(person);
1484 ip.addPerson(person);
1485 ip.getData(person).getLocation().setMarket(market);
1486 ip.checkOutPerson(person, "permanent_staff");
1487 addedPerson = true;
1488 randomPeople.add(person);
1489 }
1490
1491 if (!addedPerson || admin == null) {
1493 person.setRankId(Ranks.CITIZEN);
1495
1496 if (market.getSize() >= 8) {
1498 } else if (market.getSize() >= 6) {
1500 } else {
1502 }
1503
1504 person.addTag(Tags.CONTACT_TRADE);
1505
1506 market.getCommDirectory().addPerson(person);
1507 market.addPerson(person);
1508 ip.addPerson(person);
1509 ip.getData(person).getLocation().setMarket(market);
1510 ip.checkOutPerson(person, "permanent_staff");
1511 admin = person;
1512 randomPeople.add(person);
1513 }
1514
1515 if (admin != null) {
1516 addSkillsAndAssignAdmin(market, admin);
1517 }
1518
1519 List<PersonAPI> people = new ArrayList<PersonAPI>(randomPeople);
1520 Iterator<PersonAPI> iter = people.iterator();
1521 while (iter.hasNext()) {
1522 PersonAPI curr = iter.next();
1523 if (curr == null || curr.getFaction() == null) {
1524 iter.remove();
1525 continue;
1526 }
1527 if (curr.isDefault() || curr.isAICore() || curr.isPlayer()) {
1528 iter.remove();
1529 continue;
1530 }
1531 }
1532 dedupePortraits(people);
1533 }
1534
1535 private void createInitialPeople() {
1536
1537 //List<MarketAPI> withAutoAdmins = new ArrayList<MarketAPI>();
1538 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1539 if (market.getMemoryWithoutUpdate().getBoolean(MemFlags.MARKET_DO_NOT_INIT_COMM_LISTINGS)) continue;
1540 createInitialPeople(market, StarSystemGenerator.random);
1541 }
1542
1544
1545
1546// List<PersonAPI> people = new ArrayList<PersonAPI>(randomPeople);
1547// Iterator<PersonAPI> iter = people.iterator();
1548// while (iter.hasNext()) {
1549// PersonAPI curr = iter.next();
1550// if (curr == null || curr.getFaction() == null) {
1551// iter.remove();
1552// continue;
1553// }
1554// if (curr.isDefault() || curr.isAICore() || curr.isPlayer()) {
1555// iter.remove();
1556// continue;
1557// }
1558// }
1559//
1560// dedupePortraits(people);
1561
1562// List<PersonAPI> admins = new ArrayList<PersonAPI>();
1563// for (MarketAPI market : withAutoAdmins) {
1564// PersonAPI admin = market.getAdmin();
1565// if (admin == null || admin.getFaction() == null) continue;
1566// if (admin.isDefault() || admin.isAICore() || admin.isPlayer()) continue;
1567// admins.add(admin);
1568// }
1569// dedupePortraits(admins);
1570
1571 // this assigns faction leaders etc; important that it happen after deduping
1572 // so there's no chance the deduping messes up a custom character's portrait
1573 People.create();
1574 }
1575
1576
1577 public static void dedupePortraits(List<PersonAPI> people) {
1578 for (int i = 0; i < 10 * people.size(); i++) {
1579 if (hasDuplicatePortraits(people)) {
1580 for (PersonAPI person : people) {
1581// if (person.getNameString().equals("Abasi Ganymede")) {
1582// System.out.println("efwfwef");
1583// }
1584 if (person.isDefault() || person.isAICore() || person.isPlayer()) continue;
1585 int num = getPortraitCount(people, person);
1586 if (num > 1) {
1587 for (int j = 0; j < 10; j++) {
1588 regenPortrait(person);
1589 num = getPortraitCount(people, person);
1590 if (num <= 1) break;
1591 }
1592 Collections.shuffle(people, StarSystemGenerator.random);
1593 break;
1594 }
1595 }
1596 }
1597 }
1598 }
1599
1600 public static void regenPortrait(PersonAPI person) {
1601 if (person == null || person.getFaction() == null) return;
1602
1603 String curr = person.getPortraitSprite();
1604 if (curr == null) curr = "";
1605 for (int i = 0; i < 10; i++) {
1607 if (!curr.equals(other)) {
1608 person.setPortraitSprite(other);
1609 break;
1610 }
1611 }
1612 }
1613
1614 public static int getPortraitCount(List<PersonAPI> people, PersonAPI person) {
1615 String curr = person.getPortraitSprite();
1616 int count = 0;
1617 for (PersonAPI other : people) {
1618 String str = other.getPortraitSprite();
1619 if (str == null) continue;
1620 if (curr.equals(str)) count++;
1621 }
1622 return count;
1623 }
1624
1625 public static boolean hasDuplicatePortraits(List<PersonAPI> people) {
1626 Set<String> used = new LinkedHashSet<String>();
1627 for (PersonAPI person : people) {
1628 String str = person.getPortraitSprite();
1629 if (used.contains(str)) return true;
1630 used.add(str);
1631 }
1632 return false;
1633 }
1634
1635 protected void assignCustomAdmins() {
1637
1638 {
1639 MarketAPI market = Global.getSector().getEconomy().getMarket("station_kapteyn");
1640 if (market != null) {
1641 PersonAPI person = market.getFaction().createRandomPerson();
1642 person.setRankId(Ranks.CITIZEN);
1645
1647 //person.getStats().setSkillLevel(Skills.SPACE_OPERATIONS, 1);
1648
1649 for (PersonAPI p : market.getPeopleCopy()) {
1650 if (Ranks.POST_ADMINISTRATOR.equals(p.getPostId())) {
1651 market.removePerson(p);
1652 ip.removePerson(p);
1653 market.getCommDirectory().removePerson(p);
1654 break;
1655 }
1656 }
1657
1658 market.setAdmin(person);
1659 market.getCommDirectory().addPerson(person, 0);
1660 market.addPerson(person);
1661
1662 ip.addPerson(person);
1663 ip.getData(person).getLocation().setMarket(market);
1664 ip.checkOutPerson(person, "permanent_staff");
1665 }
1666 }
1667
1668 for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
1669 if (Factions.TRITACHYON.equals(market.getFactionId()) &&
1670 //(market.getId().equals("eochu_bres") ||
1671 (market.getId().equals("culann"))) {
1672 PersonAPI person = market.getFaction().createRandomPerson();
1673 person.setRankId(Ranks.CITIZEN);
1675
1676 // totally not a front for an Alpha Core
1679// person.getStats().setSkillLevel(Skills.SPACE_OPERATIONS, 1);
1680// person.getStats().setSkillLevel(Skills.PLANETARY_OPERATIONS, 1);
1684
1685 for (PersonAPI p : market.getPeopleCopy()) {
1686 if (Ranks.POST_ADMINISTRATOR.equals(p.getPostId())) {
1687 market.removePerson(p);
1688 ip.removePerson(p);
1689 market.getCommDirectory().removePerson(p);
1690 break;
1691 }
1692 }
1693
1694 market.setAdmin(person);
1695 market.getCommDirectory().addPerson(person, 0);
1696 market.addPerson(person);
1697
1698 ip.addPerson(person);
1699 ip.getData(person).getLocation().setMarket(market);
1700 ip.checkOutPerson(person, "permanent_staff");
1701 }
1702 }
1703
1704 }
1705
1706 public static void addSkillsAndAssignAdmin(MarketAPI market, PersonAPI admin) {
1707 List<String> skills = Global.getSettings().getSortedSkillIds();
1708// if (!skills.contains(Skills.PLANETARY_OPERATIONS) ||
1709// !skills.contains(Skills.SPACE_OPERATIONS) ||
1710// !skills.contains(Skills.INDUSTRIAL_PLANNING)) {
1711// return;
1712// }
1713 if (!skills.contains(Skills.INDUSTRIAL_PLANNING)) {
1714 return;
1715 }
1716
1717 int size = market.getSize();
1718 //if (size <= 4) return;
1719
1720 int industries = 0;
1721
1722 for (Industry curr : market.getIndustries()) {
1723 if (curr.isIndustry()) {
1724 industries++;
1725 }
1726 }
1727
1728
1729 admin.getStats().setSkipRefresh(true);
1730
1731 if (industries >= 2 || size >= 6) {
1733 }
1734
1735 admin.getStats().setSkipRefresh(false);
1737
1738 market.setAdmin(admin);
1739 }
1740
1741
1742
1743
1744
1745 @Override
1746 public void configureXStream(XStream x) {
1747 x.alias("AssignmentModulePlugin", com.fs.starfarer.api.campaign.ai.AssignmentModulePlugin.class);
1748 x.alias("ModularFleetAIAPI", com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI.class);
1749 x.alias("NavigationModulePlugin", com.fs.starfarer.api.campaign.ai.NavigationModulePlugin.class);
1750 x.alias("StrategicModulePlugin", com.fs.starfarer.api.campaign.ai.StrategicModulePlugin.class);
1751 x.alias("TacticalModulePlugin", com.fs.starfarer.api.campaign.ai.TacticalModulePlugin.class);
1752
1753 x.alias("NTP", NebulaTerrainPlugin.class);
1754 x.alias("AuroraRenderer", AuroraRenderer.class);
1755 x.alias("CRLPSBuff", CRLossPerSecondBuff.class);
1756 x.aliasAttribute(CRLossPerSecondBuff.class, "id", "id");
1757 x.aliasAttribute(CRLossPerSecondBuff.class, "mult", "m");
1758 x.aliasAttribute(CRLossPerSecondBuff.class, "dur", "d");
1759
1760 x.alias("PPBuff", PeakPerformanceBuff.class);
1761 x.aliasAttribute(PeakPerformanceBuff.class, "id", "id");
1762 x.aliasAttribute(PeakPerformanceBuff.class, "mult", "m");
1763 x.aliasAttribute(PeakPerformanceBuff.class, "dur", "d");
1764
1765
1766// x.alias("FParams", FleetParams.class);
1767// x.aliasAttribute(FleetParams.class, "hyperspaceLocation", "hL");
1768// x.aliasAttribute(FleetParams.class, "market", "m");
1769// x.aliasAttribute(FleetParams.class, "factionId", "fId");
1770// x.aliasAttribute(FleetParams.class, "fleetType", "fT");
1771// x.aliasAttribute(FleetParams.class, "combatPts", "cP");
1772// x.aliasAttribute(FleetParams.class, "freighterPts", "fP");
1773// x.aliasAttribute(FleetParams.class, "tankerPts", "taP");
1774// x.aliasAttribute(FleetParams.class, "transportPts", "trP");
1775// x.aliasAttribute(FleetParams.class, "linerPts", "lP");
1776// x.aliasAttribute(FleetParams.class, "civilianPts", "civP");
1777// x.aliasAttribute(FleetParams.class, "utilityPts", "uP");
1778// x.aliasAttribute(FleetParams.class, "qualityBonus", "qB");
1779// x.aliasAttribute(FleetParams.class, "qualityOverride", "qO");
1780// x.aliasAttribute(FleetParams.class, "officerNumMult", "oNM");
1781// x.aliasAttribute(FleetParams.class, "officerLevelBonus", "oLB");
1782// x.aliasAttribute(FleetParams.class, "levelLimit", "lL");
1783// x.aliasAttribute(FleetParams.class, "commander", "c");
1784// x.aliasAttribute(FleetParams.class, "factionIdForShipPicking", "fIDSP");
1785// x.aliasAttribute(FleetParams.class, "random", "r");
1786// x.aliasAttribute(FleetParams.class, "withOfficers", "wO");
1787// x.aliasAttribute(FleetParams.class, "maxShipSize", "mSS");
1788
1789 x.alias("SlipParams", SlipstreamParams2.class);
1790 x.aliasAttribute(SlipstreamParams2.class, "spriteKey1", "sK1");
1791 x.aliasAttribute(SlipstreamParams2.class, "spriteKey2", "sK2");
1792 x.aliasAttribute(SlipstreamParams2.class, "spriteKey3", "sK3");
1793 x.aliasAttribute(SlipstreamParams2.class, "edgeKey", "eK");
1794 x.aliasAttribute(SlipstreamParams2.class, "spriteColor", "sC");
1795 x.aliasAttribute(SlipstreamParams2.class, "windGlowColor", "wGC");
1796 x.aliasAttribute(SlipstreamParams2.class, "edgeColor", "eC");
1797 x.aliasAttribute(SlipstreamParams2.class, "baseWidth", "bW");
1798 x.aliasAttribute(SlipstreamParams2.class, "widthForMaxSpeed", "wFMS");
1799 x.aliasAttribute(SlipstreamParams2.class, "edgeWidth", "eW");
1800 x.aliasAttribute(SlipstreamParams2.class, "areaPerParticle", "aPP");
1801 x.aliasAttribute(SlipstreamParams2.class, "maxParticles", "maxP");
1802 x.aliasAttribute(SlipstreamParams2.class, "minSpeed", "minS");
1803 x.aliasAttribute(SlipstreamParams2.class, "maxSpeed", "maxS");
1804 x.aliasAttribute(SlipstreamParams2.class, "minColor", "minC");
1805 x.aliasAttribute(SlipstreamParams2.class, "maxColor", "maxC");
1806 x.aliasAttribute(SlipstreamParams2.class, "mapColor", "mCol");
1807 x.aliasAttribute(SlipstreamParams2.class, "minDur", "minD");
1808 x.aliasAttribute(SlipstreamParams2.class, "maxDur", "maxD");
1809 x.aliasAttribute(SlipstreamParams2.class, "particleFadeInTime", "pFIT");
1810 x.aliasAttribute(SlipstreamParams2.class, "lineLengthFractionOfSpeed", "lLFOS");
1811 x.aliasAttribute(SlipstreamParams2.class, "burnLevel", "bL");
1812 x.aliasAttribute(SlipstreamParams2.class, "maxBurnLevelForTextureScroll", "mBLFTS");
1813 x.aliasAttribute(SlipstreamParams2.class, "slowDownInWiderSections", "slow");
1814 x.aliasAttribute(SlipstreamParams2.class, "widthForMaxSpeedMinMult", "wFMSMin");
1815 x.aliasAttribute(SlipstreamParams2.class, "widthForMaxSpeedMaxMult", "wFMSMax");
1816 x.aliasAttribute(SlipstreamParams2.class, "name", "name");
1817 x.aliasAttribute(SlipstreamParams2.class, "texScrollMult0", "tSM0");
1818 x.aliasAttribute(SlipstreamParams2.class, "texScrollMult1", "tSM1");
1819 x.aliasAttribute(SlipstreamParams2.class, "texScrollMult2", "tSM2");
1820
1821
1822 x.alias("SSeg", SlipstreamSegment.class);
1823 x.aliasAttribute(SlipstreamSegment.class, "locB", "B");
1824 x.aliasAttribute(SlipstreamSegment.class, "loc", "l");
1825 x.aliasAttribute(SlipstreamSegment.class, "width", "w");
1826 x.aliasAttribute(SlipstreamSegment.class, "bMult", "m");
1827 x.aliasAttribute(SlipstreamSegment.class, "discovered", "d");
1828 x.aliasAttribute(SlipstreamSegment.class, "fader", "f");
1829
1830
1831 x.alias("SlipTP2", SlipstreamTerrainPlugin2.class);
1832 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "params", "p");
1833 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "segments", "s");
1834 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "totalLength", "tL");
1835 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "needsRecompute", "nR");
1836 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "bounds", "b");
1837 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "segmentsPerBox", "sPB");
1838 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "texProgress0", "tP0");
1839 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "texProgress1", "tP1");
1840 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "texProgress2", "tP2");
1841 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "despawnNoise", "dN");
1842 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "despawnDelay", "dDe");
1843 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "despawnDays", "dDa");
1844 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "despawnElapsed", "dE");
1845 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "spawnNoise", "sN");
1846 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "spawnDays", "sD");
1847 x.aliasAttribute(SlipstreamTerrainPlugin2.class, "spawnElapsed", "sE");
1848
1849 x.alias("BBox", BoundingBox.class);
1850 x.aliasAttribute(BoundingBox.class, "box", "b");
1851 x.aliasAttribute(BoundingBox.class, "padding", "p");
1852 x.aliasAttribute(BoundingBox.class, "rotatedBox", "rB");
1853 x.aliasAttribute(BoundingBox.class, "angle", "a");
1854 x.aliasAttribute(BoundingBox.class, "boxComputed", "bC");
1855 x.aliasAttribute(BoundingBox.class, "center", "c");
1856 x.aliasAttribute(BoundingBox.class, "radius", "r");
1857
1858
1859 x.alias("FParams", FleetParamsV3.class);
1860 x.aliasAttribute(FleetParamsV3.class, "source", "srcL");
1861 x.aliasAttribute(FleetParamsV3.class, "locInHyper", "lIH");
1862 x.aliasAttribute(FleetParamsV3.class, "quality", "q");
1863 x.aliasAttribute(FleetParamsV3.class, "qualityMod", "qMod");
1864 x.aliasAttribute(FleetParamsV3.class, "qualityOverride", "qO");
1865 x.aliasAttribute(FleetParamsV3.class, "factionId", "fId");
1866 x.aliasAttribute(FleetParamsV3.class, "fleetType", "fT");
1867 x.aliasAttribute(FleetParamsV3.class, "combatPts", "cP");
1868 x.aliasAttribute(FleetParamsV3.class, "freighterPts", "fP");
1869 x.aliasAttribute(FleetParamsV3.class, "tankerPts", "taP");
1870 x.aliasAttribute(FleetParamsV3.class, "transportPts", "trP");
1871 x.aliasAttribute(FleetParamsV3.class, "linerPts", "lP");
1872 x.aliasAttribute(FleetParamsV3.class, "utilityPts", "uP");
1873 x.aliasAttribute(FleetParamsV3.class, "withOfficers", "wO");
1874 x.aliasAttribute(FleetParamsV3.class, "maxShipSize", "mSS");
1875 x.aliasAttribute(FleetParamsV3.class, "minShipSize", "minSS");
1876 x.aliasAttribute(FleetParamsV3.class, "averageSMods", "aSM");
1877 x.aliasAttribute(FleetParamsV3.class, "commander", "c");
1878 x.aliasAttribute(FleetParamsV3.class, "random", "r");
1879 x.aliasAttribute(FleetParamsV3.class, "ignoreMarketFleetSizeMult", "iMFSM");
1880 x.aliasAttribute(FleetParamsV3.class, "onlyApplyFleetSizeToCombatShips", "oAFSTCS");
1881 x.aliasAttribute(FleetParamsV3.class, "doNotPrune", "dNP");
1882 x.aliasAttribute(FleetParamsV3.class, "modeOverride", "mO");
1883 x.aliasAttribute(FleetParamsV3.class, "officerLevelBonus", "oLB");
1884 x.aliasAttribute(FleetParamsV3.class, "officerNumberBonus", "oNB");
1885 x.aliasAttribute(FleetParamsV3.class, "officerNumberMult", "oNM");
1886 x.aliasAttribute(FleetParamsV3.class, "officerLevelLimit", "oLL");
1887 x.aliasAttribute(FleetParamsV3.class, "commanderLevelLimit", "cLL");
1888 x.aliasAttribute(FleetParamsV3.class, "forceAllowPhaseShipsEtc", "fAPSE");
1889 x.aliasAttribute(FleetParamsV3.class, "treatCombatFreighterSettingAsFraction", "tCFSAF");
1890 x.aliasAttribute(FleetParamsV3.class, "doctrineOverride", "dOv");
1891 x.aliasAttribute(FleetParamsV3.class, "doctrineOverride", "ts");
1892 x.aliasAttribute(FleetParamsV3.class, "maxNumShips", "mNS");
1893 x.aliasAttribute(FleetParamsV3.class, "onlyRetainFlagship", "oRF");
1894 x.aliasAttribute(FleetParamsV3.class, "flagshipVariantId", "fVI");
1895 x.aliasAttribute(FleetParamsV3.class, "flagshipVariant", "fV");
1896 x.aliasAttribute(FleetParamsV3.class, "aiCores", "aiC");
1897 x.aliasAttribute(FleetParamsV3.class, "doNotIntegrateAICores", "dNIAIC");
1898 x.aliasAttribute(FleetParamsV3.class, "allWeapons", "aW");
1899
1900
1901 x.alias("MaxBurnBuff", MaxBurnBuff.class);
1902 x.alias("PeakPerformanceBuff", PeakPerformanceBuff.class);
1903 x.alias("RingSystemTerrainPlugin", RingSystemTerrainPlugin.class);
1904 x.alias("StarCoronaAkaMainyuTerrainPlugin", StarCoronaAkaMainyuTerrainPlugin.class);
1905 x.alias("StarCoronaTerrainPlugin", StarCoronaTerrainPlugin.class);
1906
1907 x.alias("PulsarBeamTerrainPlugin", PulsarBeamTerrainPlugin.class);
1908 x.alias("EventHorizonPlugin", EventHorizonPlugin.class);
1909
1910 x.alias("FlareManager", FlareManager.class);
1911 x.aliasAttribute(FlareManager.class, "flareTracker", "fT");
1912 x.aliasAttribute(FlareManager.class, "flares", "f");
1913 x.aliasAttribute(FlareManager.class, "delegate", "d");
1914
1915 x.alias("Flare", Flare.class);
1916 x.aliasAttribute(Flare.class, "direction", "d");
1917 x.aliasAttribute(Flare.class, "arc", "a");
1918 x.aliasAttribute(Flare.class, "extraLengthMult", "eLM");
1919 x.aliasAttribute(Flare.class, "extraLengthFlat", "eLF");
1920 x.aliasAttribute(Flare.class, "shortenFlatMod", "sFM");
1921 x.aliasAttribute(Flare.class, "c", "c");
1922 x.aliasAttribute(Flare.class, "fader", "f");
1923
1924
1925
1926 x.alias("MagneticFieldTerrainPlugin", MagneticFieldTerrainPlugin.class);
1927 x.aliasAttribute(MagneticFieldTerrainPlugin.class, "entity", "e");
1928 //x.aliasAttribute(MagneticFieldTerrainPlugin.class, "params", "p");
1929 x.aliasAttribute(MagneticFieldTerrainPlugin.class, "renderer", "r");
1930 x.aliasAttribute(MagneticFieldTerrainPlugin.class, "flareManager", "fM");
1931
1932 x.alias("MagneticFieldParams", MagneticFieldParams.class);
1933 x.aliasAttribute(MagneticFieldParams.class, "baseColor", "bC");
1934 x.aliasAttribute(MagneticFieldParams.class, "c", "c");
1935 x.aliasAttribute(MagneticFieldParams.class, "auroraFrequency", "aF");
1936 x.aliasAttribute(MagneticFieldParams.class, "innerRadius", "iR");
1937 x.aliasAttribute(MagneticFieldParams.class, "outerRadius", "oR");
1938
1939 x.alias("", AuroraRenderer.class);
1940 x.aliasAttribute(AuroraRenderer.class, "phaseAngle", "a");
1941 x.aliasAttribute(AuroraRenderer.class, "delegate", "d");
1942
1943
1944 x.alias("FlickerUtil", FlickerUtil.class);
1945 x.aliasAttribute(FlickerUtil.class, "angle", "a");
1946 x.aliasAttribute(FlickerUtil.class, "brightness", "b");
1947 x.aliasAttribute(FlickerUtil.class, "currTime", "c");
1948 x.aliasAttribute(FlickerUtil.class, "currMaxBurstTime", "cMBT");
1949 x.aliasAttribute(FlickerUtil.class, "currMaxBrightness", "cMB");
1950 x.aliasAttribute(FlickerUtil.class, "maxBurstTime", "mBT");
1951 x.aliasAttribute(FlickerUtil.class, "peakTime", "pT");
1952 x.aliasAttribute(FlickerUtil.class, "peakDur", "pD");
1953 x.aliasAttribute(FlickerUtil.class, "stop", "s");
1954
1955// x.alias("FTr", FlickerTracker.class);
1956//
1957// x.aliasAttribute(FlickerTracker.class, "leadTime", "f");
1958// x.aliasAttribute(FlickerTracker.class, "shiver", "sh");
1959// x.aliasAttribute(FlickerTracker.class, "highlight", "hi");
1960// x.aliasAttribute(FlickerTracker.class, "flicker", "f");
1961// x.aliasAttribute(FlickerTracker.class, "stopped", "s");
1962// x.aliasAttribute(FlickerTracker.class, "checkedBurst", "cB");
1963
1964 x.alias("FUtil", FaderUtil.class);
1965 x.aliasAttribute(FaderUtil.class, "currBrightness", "b");
1966 x.aliasAttribute(FaderUtil.class, "durationIn", "i");
1967 x.aliasAttribute(FaderUtil.class, "durationOut", "o");
1968 x.aliasAttribute(FaderUtil.class, "state", "s");
1969 x.aliasAttribute(FaderUtil.class, "bounceDown", "d");
1970 x.aliasAttribute(FaderUtil.class, "bounceUp", "u");
1971
1972
1973 x.alias("IUtil", IntervalUtil.class);
1974 x.aliasAttribute(IntervalUtil.class, "minInterval", "i");
1975 x.aliasAttribute(IntervalUtil.class, "maxInterval", "a");
1976 x.aliasAttribute(IntervalUtil.class, "currInterval", "c");
1977 x.aliasAttribute(IntervalUtil.class, "elapsed", "e");
1978 x.aliasAttribute(IntervalUtil.class, "intervalElapsed", "ie");
1979
1980 x.alias("TimeoutTracker", TimeoutTracker.class);
1981 //x.aliasAttribute(TimeoutTracker.class, "items", "itms");
1982
1983 x.alias("IDt", TimeoutTracker.ItemData.class);
1984 x.aliasAttribute(ItemData.class, "item", "i");
1985 x.aliasAttribute(ItemData.class, "remaining", "r");
1986
1987
1988 x.alias("TrA", TransponderAbility.class);
1989 x.alias("TrAI", TransponderAbilityAI.class);
1990
1991 x.alias("EmB", EmergencyBurnAbility.class);
1992 x.alias("EmBAI", EmergencyBurnAbilityAI.class);
1993
1994 x.alias("GoDA", GoDarkAbility.class);
1995 x.alias("GoDAAI", GoDarkAbilityAI.class);
1996
1997 x.alias("SeBA", SensorBurstAbility.class);
1998 x.alias("SeBAAI", SensorBurstAbilityAI.class);
1999
2000 x.alias("SuBA", SustainedBurnAbility.class);
2001 x.alias("SuBAAI", SustainedBurnAbilityAI.class);
2002
2003 x.alias("InPA", InterdictionPulseAbility.class);
2004 x.alias("InPAAI", InterdictionPulseAbilityAI.class);
2005
2006 x.alias("IPReactionScript", IPReactionScript.class);
2007 x.aliasAttribute(IPReactionScript.class, "delay", "e");
2008 x.aliasAttribute(IPReactionScript.class, "done", "d");
2009 x.aliasAttribute(IPReactionScript.class, "other", "o");
2010 x.aliasAttribute(IPReactionScript.class, "fleet", "f");
2011 x.aliasAttribute(IPReactionScript.class, "activationDays", "aD");
2012
2013 x.alias("ScA", ScavengeAbility.class);
2014 x.alias("FJA", FractureJumpAbility.class);
2015 x.alias("RSA", RemoteSurveyAbility.class);
2016
2017 x.alias("GScan", GraviticScanAbility.class);
2018 x.alias("GSDat", GraviticScanData.class);
2019 x.alias("GSPing", GSPing.class);
2020 x.aliasAttribute(GSPing.class, "arc", "a");
2021 x.aliasAttribute(GSPing.class, "angle", "n");
2022 x.aliasAttribute(GSPing.class, "grav", "g");
2023 x.aliasAttribute(GSPing.class, "fader", "f");
2024 x.aliasAttribute(GSPing.class, "withSound", "s");
2025
2026
2027 x.alias("ProcgenUsedNames", ProcgenUsedNames.class);
2028 x.alias("SmugglingScanScript", SmugglingScanScript.class);
2029 x.alias("HasslePlayerScript", HasslePlayerScript.class);
2030
2031 //x.alias("BaseToggleAbility", BaseToggleAbility.class);
2032
2033
2034 x.aliasAttribute(BaseAbilityPlugin.class, "entity", "e");
2035 x.aliasAttribute(BaseAbilityPlugin.class, "id", "id");
2036 x.aliasAttribute(BaseAbilityPlugin.class, "disableFrames", "dF");
2037
2038 x.aliasAttribute(BaseToggleAbility.class, "turnedOn", "tO");
2039 x.aliasAttribute(BaseToggleAbility.class, "cooldownLeft", "cL");
2040 x.aliasAttribute(BaseToggleAbility.class, "isActivateCooldown", "iAC");
2041 x.aliasAttribute(BaseToggleAbility.class, "level", "l");
2042
2043 x.aliasAttribute(BaseDurationAbility.class, "turnedOn", "tO");
2044 x.aliasAttribute(BaseDurationAbility.class, "activeDaysLeft", "aDL");
2045 x.aliasAttribute(BaseDurationAbility.class, "cooldownLeft", "cL");
2046 x.aliasAttribute(BaseDurationAbility.class, "level", "l");
2047 x.aliasAttribute(BaseDurationAbility.class, "loopFadeLeft", "lFF");
2048 x.aliasAttribute(BaseDurationAbility.class, "fadingOut", "fO");
2049
2050 x.aliasAttribute(BaseAbilityAI.class, "fleet", "f");
2051 x.aliasAttribute(BaseAbilityAI.class, "ability", "a");
2052
2053 x.aliasAttribute(GoDarkAbilityAI.class, "interval", "i");
2054 x.aliasAttribute(TransponderAbilityAI.class, "interval", "i");
2055 x.aliasAttribute(EmergencyBurnAbilityAI.class, "interval", "i");
2056 x.aliasAttribute(SensorBurstAbilityAI.class, "interval", "i");
2057
2058
2059 x.alias("RAT", RollingAverageTracker.class);
2060 x.aliasAttribute(RollingAverageTracker.class, "timer", "t");
2061 x.aliasAttribute(RollingAverageTracker.class, "f", "f");
2062 x.aliasAttribute(RollingAverageTracker.class, "elaspedFractionOverride", "e");
2063 x.aliasAttribute(RollingAverageTracker.class, "curr", "c");
2064 x.aliasAttribute(RollingAverageTracker.class, "avg", "a");
2065
2066
2067// x.alias("SSAT", StarSystemActivityTracker.class);
2068// x.aliasAttribute(StarSystemActivityTracker.class, "econInterval", "eI");
2069// x.aliasAttribute(StarSystemActivityTracker.class, "timer", "t");
2070// x.aliasAttribute(StarSystemActivityTracker.class, "seen", "sn");
2071// x.aliasAttribute(StarSystemActivityTracker.class, "system", "sy");
2072// x.aliasAttribute(StarSystemActivityTracker.class, "points", "pt");
2073// x.aliasAttribute(StarSystemActivityTracker.class, "fleets", "fl");
2074// x.aliasAttribute(StarSystemActivityTracker.class, "ships", "sh");
2075
2076 x.alias("PTDFS", PlayerTradeDataForSubmarket.class);
2077 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "playerBought", "pB");
2078 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "playerSold", "pS");
2079 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "accumulatedPlayerTradeValueForPositive", "accP");
2080 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "accumulatedPlayerTradeValueForNegative", "accN");
2081 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "totalPlayerTradeValue", "tPV");
2082 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "tracker", "t");
2083 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "playerBoughtShips", "pBS");
2084 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "playerSoldShips", "pSS");
2085 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "market", "m");
2086 x.aliasAttribute(PlayerTradeDataForSubmarket.class, "submarket", "s");
2087
2088
2089 x.alias("MPFD", com.fs.starfarer.api.impl.campaign.econ.impl.MilitaryBase.PatrolFleetData.class);
2090 x.aliasAttribute( com.fs.starfarer.api.impl.campaign.econ.impl.MilitaryBase.PatrolFleetData.class, "type", "t");
2091 x.aliasAttribute( com.fs.starfarer.api.impl.campaign.econ.impl.MilitaryBase.PatrolFleetData.class, "spawnFP", "fp");
2092
2093 x.alias("PatrolFleetData", PatrolFleetData.class);
2094 x.alias("PatrolFleetManager", PatrolFleetManager.class);
2095 x.alias("PatrolFleetManagerV2", PatrolFleetManagerV2.class);
2096 x.alias("PatrolAssignmentAI", PatrolAssignmentAI.class);
2097 x.alias("SharedData", SharedData.class);
2098 x.alias("HyperspaceTerrainPlugin", HyperspaceTerrainPlugin.class);
2099 x.alias("FoodShortageEvent", FoodShortageEvent.class);
2100 x.alias("CoreEventProbabilityManager", CoreEventProbabilityManager.class);
2101 x.alias("BlackMarketPlugin", BlackMarketPlugin.class);
2102 x.alias("PlayerTradeDataForSubmarket", PlayerTradeDataForSubmarket.class);
2103 x.alias("PriceUpdate", PriceUpdate.class);
2104 x.alias("JumpDestination", JumpDestination.class);
2105 x.alias("OpenMarketPlugin", OpenMarketPlugin.class);
2106 x.alias("CampaignEventTarget", CampaignEventTarget.class);
2107 //x.alias("EconomyFleetManager", EconomyFleetManager.class);
2108 //x.alias("StarSystemActivityTracker", StarSystemActivityTracker.class);
2109// x.alias("StoragePlugin", StoragePlugin.class);
2110// x.alias("MilitarySubmarketPlugin", MilitarySubmarketPlugin.class);
2111 x.alias("OfficerManagerEvent", OfficerManagerEvent.class);
2112 x.alias("AvailableOfficer", AvailableOfficer.class);
2113 x.alias("ManagedFleetData", ManagedFleetData.class);
2114
2115 x.alias("TradeDisruption", TradeDisruption.class);
2116 x.alias("CommodityStats", CommodityStats.class);
2117 x.alias("TradeInfoUpdateEvent", TradeInfoUpdateEvent.class);
2118 x.alias("TransactionLineItem", TransactionLineItem.class);
2119 x.alias("Population", Population.class);
2120 //x.alias("MagneticFieldParams", MagneticFieldParams.class);
2121 //x.alias("MercFleetManager", MercFleetManager.class);
2122 x.alias("MercFleetManagerV2", MercFleetManagerV2.class);
2123 x.alias("InvestigationEventGoodRepWithOther", InvestigationEventGoodRepWithOther.class);
2124 //x.alias("SmugglingFactionChangeScript", SmugglingFactionChangeScript.class);
2125 x.alias("RepTrackerEvent", RepTrackerEvent.class);
2126 x.alias("Hydroponics", Hydroponics.class);
2127 x.alias("WorldUninhabitable", WorldUninhabitable.class);
2128 x.alias("ReputationChangeData", ReputationChangeData.class);
2129 x.alias("FactionTradeRepData", FactionTradeRepData.class);
2130 x.alias("RecentUnrest", RecentUnrest.class);
2131 x.alias("Outpost", Outpost.class);
2132 x.alias("CellStateTracker", CellStateTracker.class);
2133 x.alias("CoreScript", CoreScript.class);
2134
2135 x.alias("CoronaParams", CoronaParams.class);
2136 x.aliasAttribute(CoronaParams.class, "windBurnLevel", "wBL");
2137 x.aliasAttribute(CoronaParams.class, "flareProbability", "fP");
2138 x.aliasAttribute(CoronaParams.class, "crLossMult", "crLM");
2139
2140 x.alias("RingParams", RingParams.class);
2141 x.aliasAttribute(RingParams.class, "bandWidthInEngine", "bWIE");
2142 x.aliasAttribute(RingParams.class, "middleRadius", "mR");
2143 x.aliasAttribute(RingParams.class, "name", "n");
2144 x.aliasAttribute(RingParams.class, "relatedEntity", "e");
2145
2146 x.alias("AsteroidBeltParams", AsteroidBeltParams.class);
2147 x.aliasAttribute(AsteroidBeltParams.class, "numAsteroids", "nA");
2148 x.aliasAttribute(AsteroidBeltParams.class, "minOrbitDays", "minO");
2149 x.aliasAttribute(AsteroidBeltParams.class, "maxOrbitDays", "maxO");
2150 x.aliasAttribute(AsteroidBeltParams.class, "minSize", "minS");
2151 x.aliasAttribute(AsteroidBeltParams.class, "maxSize", "maxS");
2152
2153 x.alias("AsteroidFieldParams", AsteroidFieldParams.class);
2154 x.aliasAttribute(AsteroidFieldParams.class, "minRadius", "minR");
2155 x.aliasAttribute(AsteroidFieldParams.class, "maxRadius", "maxR");
2156 x.aliasAttribute(AsteroidFieldParams.class, "numAsteroids", "nA");
2157 x.aliasAttribute(AsteroidFieldParams.class, "minAsteroids", "minA");
2158 x.aliasAttribute(AsteroidFieldParams.class, "maxAsteroids", "maxA");
2159 x.aliasAttribute(AsteroidFieldParams.class, "minSize", "minS");
2160 x.aliasAttribute(AsteroidFieldParams.class, "maxSize", "maxS");
2161
2162 x.alias("AsteroidBeltTerrainPlugin", AsteroidBeltTerrainPlugin.class);
2163 x.aliasAttribute(AsteroidBeltTerrainPlugin.class, "needToCreateAsteroids", "nTCA");
2164
2165 x.alias("AsteroidFieldTerrainPlugin", AsteroidFieldTerrainPlugin.class);
2166
2167
2168 x.alias("BaseTerrain", BaseTerrain.class);
2169 x.aliasAttribute(BaseTerrain.class, "terrainId", "tid");
2170 x.aliasAttribute(BaseTerrain.class, "name", "n");
2171
2172 x.alias("BaseRingTerrain", BaseRingTerrain.class);
2173 x.alias("AbandonedStation", AbandonedStation.class);
2174 x.alias("WorldTundra", WorldTundra.class);
2175 x.alias("Frontier", Frontier.class);
2176 x.alias("RadioChatterTerrainPlugin", RadioChatterTerrainPlugin.class);
2177 x.alias("RadioChatterParams", RadioChatterParams.class);
2178 x.alias("WorldBarrenMarginal", WorldBarrenMarginal.class);
2179 x.alias("UrbanizedPolity", UrbanizedPolity.class);
2180 x.alias("OrganizedCrime", OrganizedCrime.class);
2181 x.alias("Headquarters", Headquarters.class);
2182 x.alias("ViceDemand", ViceDemand.class);
2183 x.alias("SystemBounty", SystemBounty.class);
2184 x.alias("WorldTwilight", WorldTwilight.class);
2185 x.alias("RuralPolity", RuralPolity.class);
2186 x.alias("FreeMarket", FreeMarket.class);
2187 x.alias("WorldIce", WorldIce.class);
2188 x.alias("Dissident", Dissident.class);
2189 x.alias("TradeCenter", TradeCenter.class);
2190 x.alias("CottageIndustry", CottageIndustry.class);
2191 x.alias("LuddicMajority", LuddicMajority.class);
2192 x.alias("WorldArid", WorldArid.class);
2193 x.alias("Decivilized", Decivilized.class);
2194 x.alias("StealthMinefields", StealthMinefields.class);
2195 x.alias("Smuggling", Smuggling.class);
2196 x.alias("ShipbreakingCenter", ShipbreakingCenter.class);
2197 x.alias("FoodShortage", FoodShortage.class);
2198 x.alias("CRRecoveryBuff", CRRecoveryBuff.class);
2199 x.alias("LargeRefugeePopulation", LargeRefugeePopulation.class);
2200 x.alias("WorldWater", WorldWater.class);
2201 x.alias("RegionalCapital", RegionalCapital.class);
2202 x.alias("OrbitalBurns", OrbitalBurns.class);
2203 x.alias("WorldJungle", WorldJungle.class);
2204 x.alias("WorldDesert", WorldDesert.class);
2205
2206 x.alias("BaseHazardCondition", BaseHazardCondition.class);
2207 x.alias("WorldTerran", WorldTerran.class);
2208
2209 x.alias("DebrisFieldTerrainPlugin", DebrisFieldTerrainPlugin.class);
2210 x.alias("DebrisFieldParams", DebrisFieldParams.class);
2211 x.aliasAttribute(DebrisFieldParams.class, "density", "d");
2212 x.aliasAttribute(DebrisFieldParams.class, "baseDensity", "bD");
2213 x.aliasAttribute(DebrisFieldParams.class, "glowsDays", "gD");
2214 x.aliasAttribute(DebrisFieldParams.class, "lastsDays", "lD");
2215 x.aliasAttribute(DebrisFieldParams.class, "minSize", "min1");
2216 x.aliasAttribute(DebrisFieldParams.class, "maxSize", "max1");
2217 x.aliasAttribute(DebrisFieldParams.class, "glowColor", "gC");
2218 x.aliasAttribute(DebrisFieldParams.class, "defFaction", "dF");
2219 x.aliasAttribute(DebrisFieldParams.class, "defenderProb", "dP");
2220 x.aliasAttribute(DebrisFieldParams.class, "minStr", "min2");
2221 x.aliasAttribute(DebrisFieldParams.class, "maxStr", "max2");
2222 x.aliasAttribute(DebrisFieldParams.class, "maxDefenderSize", "mDS");
2223 x.aliasAttribute(DebrisFieldParams.class, "baseSalvageXP", "xp");
2224 x.aliasAttribute(DebrisFieldParams.class, "source", "s");
2225
2226
2227
2228 x.alias("PlayerTradeProfitabilityData", PlayerTradeProfitabilityData.class);
2229 x.alias("CommodityData", CommodityData.class);
2230 x.alias("CoreCampaignPluginImpl", CoreCampaignPluginImpl.class);
2231 x.alias("FactionHostilityEvent", FactionHostilityEvent.class);
2232 x.alias("FactionHostilityPairKey", FactionHostilityPairKey.class);
2233 x.alias("InvestigationEventSmugglingV2", InvestigationEventSmugglingV2.class);
2234 x.alias("RecentUnrestEvent", RecentUnrestEvent.class);
2235 //x.alias("BountyPirateFleetManager", BountyPirateFleetManager.class);
2236
2237
2238
2239 x.alias("AsteroidBeltParams", AsteroidBeltParams.class);
2240
2241
2242 x.alias("DomainSurveyDerelictSpecial", DomainSurveyDerelictSpecial.class);
2243
2244 x.alias("BaseCustomEntityPlugin", BaseCustomEntityPlugin.class);
2245 x.aliasAttribute(BaseCustomEntityPlugin.class, "entity", "e");
2246
2247 x.alias("DerelictShipEntityPlugin", DerelictShipEntityPlugin.class);
2248 x.aliasAttribute(DerelictShipEntityPlugin.class, "data", "d");
2249 x.aliasAttribute(DerelictShipEntityPlugin.class, "elapsed", "el");
2250 x.aliasAttribute(DerelictShipEntityPlugin.class, "angVel", "aV");
2251
2252 x.alias("DerelictShipData", DerelictShipData.class);
2253 x.aliasAttribute(DerelictShipData.class, "ship", "s");
2254 x.aliasAttribute(DerelictShipData.class, "durationDays", "d");
2255 x.aliasAttribute(DerelictShipData.class, "canHaveExtraCargo", "c");
2256
2257 x.alias("PerShipData", PerShipData.class);
2258 x.aliasAttribute(PerShipData.class, "condition", "c");
2259 x.aliasAttribute(PerShipData.class, "variantId", "vId");
2260 x.aliasAttribute(PerShipData.class, "variant", "v");
2261 x.aliasAttribute(PerShipData.class, "shipName", "sN");
2262 x.aliasAttribute(PerShipData.class, "addDmods", "d");
2263 x.aliasAttribute(PerShipData.class, "pruneWeapons", "p");
2264 x.aliasAttribute(PerShipData.class, "sModProb", "sMP");
2265
2266
2267 x.alias("ShipCondition", ShipCondition.class);
2268
2269
2270 x.alias("ShipRecoverySpecialData", ShipRecoverySpecialData.class);
2271 x.aliasAttribute(ShipRecoverySpecialData.class, "ships", "s");
2272 x.aliasAttribute(ShipRecoverySpecialData.class, "desc", "d");
2273
2274 x.alias("BreadcrumbSpecialData", BreadcrumbSpecialData.class);
2275 x.aliasAttribute(BreadcrumbSpecialData.class, "targetId", "tI");
2276 x.aliasAttribute(BreadcrumbSpecialData.class, "targetName", "tN");
2277
2278 x.alias("DerSpecialType", SpecialType.class);
2279 x.alias("DomainSurveyDerelictSpecialData", DomainSurveyDerelictSpecialData.class);
2280 x.aliasAttribute(DomainSurveyDerelictSpecialData.class, "type", "t");
2281 x.aliasAttribute(DomainSurveyDerelictSpecialData.class, "entityId", "eI");
2282 x.aliasAttribute(DomainSurveyDerelictSpecialData.class, "secondaryId", "sI");
2283
2284
2285 x.alias("SleeperSpecialType", SleeperSpecialType.class);
2286 x.alias("SleeperPodsSpecialData", SleeperPodsSpecialData.class);
2287 x.aliasAttribute(SleeperPodsSpecialData.class, "type", "t");
2288 //x.aliasAttribute(SleeperPodsSpecialData.class, "quantity", "q");
2289 x.aliasAttribute(SleeperPodsSpecialData.class, "officer", "o");
2290
2291
2292 x.alias("SDSpecialType", SurveyDataSpecialType.class);
2293 x.alias("SurveyDataSpecialData", SurveyDataSpecialData.class);
2294 x.aliasAttribute(SurveyDataSpecialData.class, "type", "t");
2295 x.aliasAttribute(SurveyDataSpecialData.class, "entityId", "eI");
2296 x.aliasAttribute(SurveyDataSpecialData.class, "secondaryId", "sI");
2297 x.aliasAttribute(SurveyDataSpecialData.class, "includeRuins", "r");
2298
2299
2300 x.alias("TransmitterTrapSpecialData", TransmitterTrapSpecialData.class);
2301 x.aliasAttribute(TransmitterTrapSpecialData.class, "prob", "c");
2302 x.aliasAttribute(TransmitterTrapSpecialData.class, "fleetId", "fID");
2303 x.aliasAttribute(TransmitterTrapSpecialData.class, "nearbyFleetFaction", "nFF");
2304 x.aliasAttribute(TransmitterTrapSpecialData.class, "useClosestFleetInRange", "uCFIR");
2305 x.aliasAttribute(TransmitterTrapSpecialData.class, "useAllFleetsInRange", "uAFIR");
2306 x.aliasAttribute(TransmitterTrapSpecialData.class, "params", "p");
2307 x.aliasAttribute(TransmitterTrapSpecialData.class, "minRange", "min");
2308 x.aliasAttribute(TransmitterTrapSpecialData.class, "maxRange", "max");
2309
2310
2311 x.alias("CargoManifestSpecialData", CargoManifestSpecialData.class);
2312 x.aliasAttribute(CargoManifestSpecialData.class, "commodityId", "c");
2313
2314
2315
2316 x.alias("DDOv", DefenderDataOverride.class);
2317 x.aliasAttribute(DefenderDataOverride.class, "probDefenders", "p");
2318 x.aliasAttribute(DefenderDataOverride.class, "minStr", "i");
2319 x.aliasAttribute(DefenderDataOverride.class, "maxStr", "a");
2320 x.aliasAttribute(DefenderDataOverride.class, "maxDefenderSize", "d");
2321 x.aliasAttribute(DefenderDataOverride.class, "minDefenderSize", "m");
2322 x.aliasAttribute(DefenderDataOverride.class, "probStation", "t");
2323 x.aliasAttribute(DefenderDataOverride.class, "stationRole", "s");
2324 x.aliasAttribute(DefenderDataOverride.class, "defFaction", "f");
2325
2326
2327 x.alias("SeededFleetManager", SeededFleetManager.class);
2328 x.aliasAttribute(SeededFleetManager.class, "fleets", "f");
2329 x.aliasAttribute(SeededFleetManager.class, "inflateRangeLY", "iRLY");
2330 x.aliasAttribute(SeededFleetManager.class, "system", "s");
2331
2332 x.alias("SeededFleet", SeededFleet.class);
2333 x.aliasAttribute(SeededFleet.class, "seed", "s");
2334 x.aliasAttribute(SeededFleet.class, "points", "p");
2335 x.aliasAttribute(SeededFleet.class, "fleet", "f");
2336
2337 x.alias("RemnantSeededFleetManager", RemnantSeededFleetManager.class);
2338 x.aliasAttribute(RemnantSeededFleetManager.class, "minPts", "i");
2339 x.aliasAttribute(RemnantSeededFleetManager.class, "maxPts", "a");
2340 x.aliasAttribute(RemnantSeededFleetManager.class, "activeChance", "c");
2341
2342 x.alias("RFICGen", RemnantFleetInteractionConfigGen.class);
2343 x.alias("RSICGen", RemnantStationInteractionConfigGen.class);
2344
2345 x.alias("SourceBasedFleetManager", SourceBasedFleetManager.class);
2346 x.aliasAttribute(SourceBasedFleetManager.class, "fleets", "f");
2347 x.aliasAttribute(SourceBasedFleetManager.class, "thresholdLY", "t");
2348 x.aliasAttribute(SourceBasedFleetManager.class, "source", "s");
2349 x.aliasAttribute(SourceBasedFleetManager.class, "minFleets", "i");
2350 x.aliasAttribute(SourceBasedFleetManager.class, "maxFleets", "a");
2351 x.aliasAttribute(SourceBasedFleetManager.class, "respawnDelay", "r");
2352 x.aliasAttribute(SourceBasedFleetManager.class, "destroyed", "d");
2353 x.aliasAttribute(SourceBasedFleetManager.class, "sourceLocation", "sL");
2354
2355 x.alias("RemnantStationFleetManager", RemnantStationFleetManager.class);
2356 x.aliasAttribute(RemnantStationFleetManager.class, "minPts", "iA");
2357 x.aliasAttribute(RemnantStationFleetManager.class, "maxPts", "aA");
2358 x.aliasAttribute(RemnantStationFleetManager.class, "totalLost", "tL");
2359
2360 x.alias("RemnantAssignmentAI", RemnantAssignmentAI.class);
2361 x.aliasAttribute(RemnantAssignmentAI.class, "homeSystem", "h");
2362 x.aliasAttribute(RemnantAssignmentAI.class, "fleet", "f");
2363 x.aliasAttribute(RemnantAssignmentAI.class, "source", "s");
2364
2365
2366 x.alias("WarningBeaconEntityPlugin", WarningBeaconEntityPlugin.class);
2367 x.aliasAttribute(WarningBeaconEntityPlugin.class, "phase", "p");
2368 x.aliasAttribute(WarningBeaconEntityPlugin.class, "freqMult", "f");
2369 x.aliasAttribute(WarningBeaconEntityPlugin.class, "sincePing", "s");
2370
2371
2372
2373 x.alias("RouteManager", RouteManager.class);
2374 x.aliasAttribute(RouteManager.class, "routes", "r");
2375
2376 x.alias("RouteData", RouteData.class);
2377 x.aliasAttribute(RouteData.class, "extra", "x");
2378 x.aliasAttribute(RouteData.class, "delay", "a");
2379 x.aliasAttribute(RouteData.class, "source", "o");
2380 x.aliasAttribute(RouteData.class, "market", "m");
2381 x.aliasAttribute(RouteData.class, "seed", "s");
2382 x.aliasAttribute(RouteData.class, "timestamp", "t");
2383 x.aliasAttribute(RouteData.class, "segments", "e");
2384 x.aliasAttribute(RouteData.class, "activeFleet", "f");
2385 x.aliasAttribute(RouteData.class, "daysSinceSeenByPlayer", "d");
2386 x.aliasAttribute(RouteData.class, "custom", "c");
2387 x.aliasAttribute(RouteData.class, "current", "r");
2388 x.aliasAttribute(RouteData.class, "spawner", "p");
2389
2390 x.alias("RouteFleetSpawner", RouteFleetSpawner.class);
2391
2392 x.alias("BaseRouteFleetManager", BaseRouteFleetManager.class);
2393 x.aliasAttribute(BaseRouteFleetManager.class, "interval", "i");
2394 x.alias("RuinsFleetRouteManager", RuinsFleetRouteManager.class);
2395 x.aliasAttribute(RuinsFleetRouteManager.class, "system", "s");
2396 //x.aliasAttribute(RuinsFleetRouteManager.class, "interval", "i");
2397
2398
2399 x.alias("BaseAssignmentAI", BaseAssignmentAI.class);
2400 x.aliasAttribute(BaseAssignmentAI.class, "capTracker", "cT");
2401 x.aliasAttribute(BaseAssignmentAI.class, "buildTracker", "bT");
2402
2403 x.alias("RouteFleetAssignmentAI", RouteFleetAssignmentAI.class);
2404 x.aliasAttribute(RouteFleetAssignmentAI.class, "gaveReturnAssignments", "gRA");
2405
2406 x.alias("ScavengerFleetAssignmentAI", ScavengerFleetAssignmentAI.class);
2407 x.alias("DistressCallNormalAssignmentAI", DistressCallNormalAssignmentAI.class);
2408 x.alias("DistressCallPirateAmbushAssignmentAI", DistressCallPirateAmbushAssignmentAI.class);
2409 x.alias("DistressCallPirateAmbushTrapAssignmentAI", DistressCallPirateAmbushTrapAssignmentAI.class);
2410 x.alias("DistressCallResponsePirateAssignmentAI", DistressCallResponsePirateAssignmentAI.class);
2411 x.alias("DistressCallResponseAssignmentAI", DistressCallResponseAssignmentAI.class);
2412 x.alias("TutorialLeashAssignmentAI", TutorialLeashAssignmentAI.class);
2413
2414 x.alias("DistressResponseData", DistressResponseData.class);
2415 x.alias("NESpawnData", NESpawnData.class);
2416
2417 x.alias("OptionalFleetData", OptionalFleetData.class);
2418 x.aliasAttribute(OptionalFleetData.class, "strength", "s");
2419 x.aliasAttribute(OptionalFleetData.class, "quality", "q");
2420 x.aliasAttribute(OptionalFleetData.class, "factionId", "f");
2421 x.aliasAttribute(OptionalFleetData.class, "fleetType", "t");
2422 x.aliasAttribute(OptionalFleetData.class, "damage", "d");
2423
2424
2425 x.aliasAttribute(BaseAssignmentAI.class, "fleet", "f");
2426 x.aliasAttribute(BaseAssignmentAI.class, "done", "d");
2427 //x.aliasAttribute(BaseAssignmentAI.class, "giveInitial", "gI");
2428 x.aliasAttribute(RouteFleetAssignmentAI.class, "route", "r");
2429 x.aliasAttribute(ScavengerFleetAssignmentAI.class, "pirate", "p");
2430 x.aliasAttribute(ScavengerFleetAssignmentAI.class, "piracyCheck", "pC");
2431
2432 x.aliasAttribute(DistressCallNormalAssignmentAI.class, "system", "s");
2433 x.aliasAttribute(DistressCallNormalAssignmentAI.class, "jumpPoint", "jP");
2434 x.aliasAttribute(DistressCallNormalAssignmentAI.class, "elapsed", "e");
2435 x.aliasAttribute(DistressCallNormalAssignmentAI.class, "dur", "dur");
2436 x.aliasAttribute(DistressCallNormalAssignmentAI.class, "contactedPlayer", "cP");
2437
2438 x.aliasAttribute(DistressCallPirateAmbushAssignmentAI.class, "system", "s");
2439 x.aliasAttribute(DistressCallPirateAmbushAssignmentAI.class, "jumpPoint", "jP");
2440 x.aliasAttribute(DistressCallPirateAmbushAssignmentAI.class, "elapsed", "e");
2441 x.aliasAttribute(DistressCallPirateAmbushAssignmentAI.class, "dur", "dur");
2442
2443 x.aliasAttribute(DistressCallPirateAmbushTrapAssignmentAI.class, "system", "s");
2444 x.aliasAttribute(DistressCallPirateAmbushTrapAssignmentAI.class, "jumpPoint", "jP");
2445 x.aliasAttribute(DistressCallPirateAmbushTrapAssignmentAI.class, "elapsed", "e");
2446 x.aliasAttribute(DistressCallPirateAmbushTrapAssignmentAI.class, "dur", "dur");
2447
2448 x.aliasAttribute(DistressCallResponsePirateAssignmentAI.class, "system", "s");
2449 x.aliasAttribute(DistressCallResponsePirateAssignmentAI.class, "elapsed", "e");
2450 x.aliasAttribute(DistressCallResponsePirateAssignmentAI.class, "dur", "dur");
2451 x.aliasAttribute(DistressCallResponsePirateAssignmentAI.class, "contactedPlayer", "cP");
2452 x.aliasAttribute(DistressCallResponsePirateAssignmentAI.class, "inner", "i");
2453 x.aliasAttribute(DistressCallResponsePirateAssignmentAI.class, "outer", "o");
2454
2455 x.aliasAttribute(DistressCallResponseAssignmentAI.class, "system", "s");
2456 x.aliasAttribute(DistressCallResponseAssignmentAI.class, "elapsed", "e");
2457 x.aliasAttribute(DistressCallResponseAssignmentAI.class, "dur", "dur");
2458 x.aliasAttribute(DistressCallResponseAssignmentAI.class, "contactedPlayer", "cP");
2459 x.aliasAttribute(DistressCallResponseAssignmentAI.class, "inner", "i");
2460 x.aliasAttribute(DistressCallResponseAssignmentAI.class, "outer", "o");
2461
2462 x.aliasAttribute(TutorialLeashAssignmentAI.class, "system", "s");
2463 x.aliasAttribute(TutorialLeashAssignmentAI.class, "jumpPoint", "jP");
2464 x.aliasAttribute(TutorialLeashAssignmentAI.class, "elapsed", "e");
2465 x.aliasAttribute(TutorialLeashAssignmentAI.class, "dur", "dur");
2466 x.aliasAttribute(TutorialLeashAssignmentAI.class, "toGuard", "tG");
2467
2468
2469 x.alias("RtSeg", RouteSegment.class);
2470 x.aliasAttribute(RouteSegment.class, "id", "i");
2471 x.aliasAttribute(RouteSegment.class, "elapsed", "e");
2472 x.aliasAttribute(RouteSegment.class, "daysMax", "d");
2473 x.aliasAttribute(RouteSegment.class, "from", "f");
2474 x.aliasAttribute(RouteSegment.class, "to", "t");
2475
2476// x.alias("RPt", RoutePoint.class);
2477// x.aliasAttribute(RoutePoint.class, "x", "x");
2478// x.aliasAttribute(RoutePoint.class, "y", "y");
2479// x.aliasAttribute(RoutePoint.class, "system", "s");
2480
2481// x.aliasAttribute(RouteSegment.class, "systemFrom", "sF");
2482// x.aliasAttribute(RouteSegment.class, "systemTo", "sT");
2483// x.aliasAttribute(RouteSegment.class, "custom", "c");
2484// x.aliasAttribute(RouteSegment.class, "entityFrom", "eF");
2485// x.aliasAttribute(RouteSegment.class, "entityTo", "eT");
2486 //x.aliasAttribute(RouteSegment.class, "vectorLocation", "vL");
2487
2488
2489
2490 x.alias("TowCable", TowCable.class);
2491 x.alias("TowCableBuff", TowCableBuff.class);
2492 x.aliasAttribute(TowCableBuff.class, "buffId", "b");
2493 x.aliasAttribute(TowCableBuff.class, "frames", "f");
2494
2495 x.alias("TowCable", TowCable.class);
2496
2497 x.alias("BaseEventPlugin", BaseEventPlugin.class);
2498 x.aliasAttribute(BaseEventPlugin.class, "id", "id");
2499 x.aliasAttribute(BaseEventPlugin.class, "eventType", "eTp");
2500 x.aliasAttribute(BaseEventPlugin.class, "eventTarget", "eTg");
2501 x.aliasAttribute(BaseEventPlugin.class, "market", "mk");
2502 x.aliasAttribute(BaseEventPlugin.class, "entity", "en");
2503 x.aliasAttribute(BaseEventPlugin.class, "faction", "fa");
2504 x.aliasAttribute(BaseEventPlugin.class, "statModId", "sMI");
2505 x.aliasAttribute(BaseEventPlugin.class, "started", "st");
2506 x.aliasAttribute(BaseEventPlugin.class, "memory", "mem");
2507 x.aliasAttribute(BaseEventPlugin.class, "startProbability", "sP");
2508
2509
2510 x.alias("MissionCompletionRep", MissionCompletionRep.class);
2511 x.aliasAttribute(MissionCompletionRep.class, "successDelta", "sD");
2512 x.aliasAttribute(MissionCompletionRep.class, "successLimit", "sL");
2513 x.aliasAttribute(MissionCompletionRep.class, "failureDelta", "fD");
2514 x.aliasAttribute(MissionCompletionRep.class, "failureLimit", "fL");
2515
2516 x.alias("NearbyEventsEvent", NearbyEventsEvent.class);
2517 x.aliasAttribute(NearbyEventsEvent.class, "derelictShipInterval", "dSI");
2518 x.aliasAttribute(NearbyEventsEvent.class, "distressCallInterval", "dCI");
2519 x.aliasAttribute(NearbyEventsEvent.class, "skipForDistressCalls", "sFDC");
2520
2521 x.alias("CargoPodsEntityPlugin", CargoPodsEntityPlugin.class);
2522 x.aliasAttribute(CargoPodsEntityPlugin.class, "elapsed", "el");
2523 x.aliasAttribute(CargoPodsEntityPlugin.class, "maxDays", "mD");
2524 x.aliasAttribute(CargoPodsEntityPlugin.class, "extraDays", "eD");
2525 x.aliasAttribute(CargoPodsEntityPlugin.class, "neverExpire", "nE");
2526
2527
2528 x.alias("DistressCallAbility", DistressCallAbility.class);
2529 x.aliasAttribute(DistressCallAbility.class, "performed", "p");
2530 x.aliasAttribute(DistressCallAbility.class, "numTimesUsed", "nTU");
2531 x.aliasAttribute(DistressCallAbility.class, "lastUsed", "lU");
2532 x.aliasAttribute(DistressCallAbility.class, "uses", "u");
2533
2534 x.alias("AbilityUseData", AbilityUseData.class);
2535 x.aliasAttribute(AbilityUseData.class, "timestamp", "t");
2536 x.aliasAttribute(AbilityUseData.class, "location", "l");
2537
2538 x.alias("DistressCallOutcome", DistressCallOutcome.class);
2539
2540 x.alias("DelayedActionScript", DelayedActionScript.class);
2541 x.aliasAttribute(DelayedActionScript.class, "daysLeft", "dL");
2542 x.aliasAttribute(DelayedActionScript.class, "done", "d");
2543
2544
2545 x.alias("GalatiaMarketScript", GalatiaMarketScript.class);
2546 x.aliasAttribute(GalatiaMarketScript.class, "market", "m");
2547 x.aliasAttribute(GalatiaMarketScript.class, "interval", "i");
2548
2549
2550 x.alias("CampaignTutorialStage", CampaignTutorialStage.class);
2551
2552 x.alias("CampaignTutorialScript", CampaignTutorialScript.class);
2553 x.aliasAttribute(CampaignTutorialScript.class, "askedPlayerToSave", "aPTS");
2554 x.aliasAttribute(CampaignTutorialScript.class, "playerSaved", "pS");
2555 x.aliasAttribute(CampaignTutorialScript.class, "elapsed", "e");
2556 x.aliasAttribute(CampaignTutorialScript.class, "lastCheckDistToAncyra", "lCDTA");
2557 x.aliasAttribute(CampaignTutorialScript.class, "system", "s");
2558 x.aliasAttribute(CampaignTutorialScript.class, "ancyra", "a");
2559 x.aliasAttribute(CampaignTutorialScript.class, "derinkuyu", "d");
2560 x.aliasAttribute(CampaignTutorialScript.class, "stage", "st");
2561 x.aliasAttribute(CampaignTutorialScript.class, "orbitalResetDone", "oRD");
2562 x.aliasAttribute(CampaignTutorialScript.class, "debrisField", "dF");
2563 x.aliasAttribute(CampaignTutorialScript.class, "pirateFleet", "pF");
2564 x.aliasAttribute(CampaignTutorialScript.class, "detachment", "det");
2565 x.aliasAttribute(CampaignTutorialScript.class, "intel", "i");
2566
2567
2568 x.alias("TutorialMissionIntel", TutorialMissionIntel.class);
2569 x.alias("TutorialMissionStage", TutorialMissionStage.class);
2570
2571
2572 x.alias("RogueMinerMiscFleetManager", RogueMinerMiscFleetManager.class);
2573 x.alias("SaveNagScript", SaveNagScript.class);
2574
2575
2576 x.alias("ExSalv", ExtraSalvage.class);
2577 x.aliasAttribute(ExtraSalvage.class, "cargo", "c");
2578
2579 x.alias("SpID", SpecialItemData.class);
2580 x.aliasAttribute(SpecialItemData.class, "id", "i");
2581 x.aliasAttribute(SpecialItemData.class, "data", "d");
2582
2583
2584 x.alias("BaseGenericPlugin", BaseGenericPlugin.class);
2585 x.alias("SalvageDefenderModificationPluginImpl", SalvageDefenderModificationPluginImpl.class);
2586 x.alias("PKDefenderPluginImpl", PKDefenderPluginImpl.class);
2587
2588 x.alias("CampaignPingSpec", CampaignPingSpec.class);
2589 x.aliasAttribute(CampaignPingSpec.class, "id", "id");
2590 x.aliasAttribute(CampaignPingSpec.class, "sounds", "s");
2591 x.aliasAttribute(CampaignPingSpec.class, "color", "c");
2592 x.aliasAttribute(CampaignPingSpec.class, "minRange", "mR");
2593 x.aliasAttribute(CampaignPingSpec.class, "range", "r");
2594 x.aliasAttribute(CampaignPingSpec.class, "duration", "d");
2595 x.aliasAttribute(CampaignPingSpec.class, "delay", "de");
2596 x.aliasAttribute(CampaignPingSpec.class, "width", "w");
2597 x.aliasAttribute(CampaignPingSpec.class, "alphaMult", "aM");
2598 x.aliasAttribute(CampaignPingSpec.class, "inFraction", "iF");
2599 x.aliasAttribute(CampaignPingSpec.class, "useFactionColor", "uFC");
2600 x.aliasAttribute(CampaignPingSpec.class, "invert", "i");
2601 x.aliasAttribute(CampaignPingSpec.class, "num", "n");
2602
2603
2604// <c cl="com.fs.starfarer.api.impl.campaign.fleets.EconomyFleetFleetAssignmentAI$EconomyRouteData" z="7570">
2605// <cargoCap>3220.0</cargoCap>
2606// <fuelCap>1685.0</fuelCap>
2607// <personnelCap>485.0</personnelCap>
2608// <size>6.0</size>
2609// <smuggling>false</smuggling>
2610// <from cl="Market" ref="435"></from>
2611// <to cl="Market" ref="410"></to>
2612// <cargoDeliver z="7571">
2613// <com.fs.starfarer.api.impl.campaign.fleets.EconomyFleetFleetAssignmentAI_-CargoQuantityData z="7572">
2614// <cargo>organics</cargo>
2615// <units>5</units>
2616// </com.fs.starfarer.api.impl.campaign.fleets.EconomyFleetFleetAssignmentAI_-CargoQuantityData>
2617 x.alias("ERDat", EconomyRouteData.class);
2618 x.aliasAttribute(EconomyRouteData.class, "cargoCap", "c");
2619 x.aliasAttribute(EconomyRouteData.class, "fuelCap", "f");
2620 x.aliasAttribute(EconomyRouteData.class, "personnelCap", "p");
2621 x.aliasAttribute(EconomyRouteData.class, "size", "s");
2622 x.aliasAttribute(EconomyRouteData.class, "smuggling", "m");
2623 x.aliasAttribute(EconomyRouteData.class, "from", "r");
2624 x.aliasAttribute(EconomyRouteData.class, "to", "t");
2625 x.aliasAttribute(EconomyRouteData.class, "cargoDeliver", "d");
2626 x.aliasAttribute(EconomyRouteData.class, "cargoReturn", "u");
2627
2628
2629 x.alias("CQD", CargoQuantityData.class);
2630 x.aliasAttribute(CargoQuantityData.class, "cargo", "c");
2631 x.aliasAttribute(CargoQuantityData.class, "units", "u");
2632
2633
2634 x.alias("CommRelayEP", CommRelayEntityPlugin.class);
2635 x.alias("NavBuoyEP", NavBuoyEntityPlugin.class);
2636 x.alias("SensorArrayEP", SensorArrayEntityPlugin.class);
2637
2638 x.alias("PopulationAndInfrastructure", PopulationAndInfrastructure.class);
2639 x.aliasAttribute(BaseIndustry.class, "supply", "s");
2640 x.aliasAttribute(BaseIndustry.class, "demand", "d");
2641 x.aliasAttribute(BaseIndustry.class, "income", "i");
2642 x.aliasAttribute(BaseIndustry.class, "upkeep", "u");
2643 x.aliasAttribute(BaseIndustry.class, "market", "m");
2644 x.aliasAttribute(BaseIndustry.class, "id", "id");
2645 x.aliasAttribute(BaseIndustry.class, "buildProgress", "bP");
2646 x.aliasAttribute(BaseIndustry.class, "building", "b");
2647 x.aliasAttribute(BaseIndustry.class, "upgradeId", "uI");
2648 x.aliasAttribute(BaseIndustry.class, "aiCoreId", "aCI");
2649 x.aliasAttribute(BaseIndustry.class, "demandReduction", "dR");
2650 x.aliasAttribute(BaseIndustry.class, "supplyBonus", "sB");
2651 x.aliasAttribute(BaseIndustry.class, "wasDisrupted", "wD");
2652
2653
2654 x.alias("DFInfl", DefaultFleetInflater.class);
2655 x.alias("DFInflP", DefaultFleetInflaterParams.class);
2656 x.aliasAttribute(DefaultFleetInflaterParams.class, "seed", "s");
2657 x.aliasAttribute(DefaultFleetInflaterParams.class, "timestamp", "t");
2658 x.aliasAttribute(DefaultFleetInflaterParams.class, "persistent", "p");
2659 x.aliasAttribute(DefaultFleetInflaterParams.class, "quality", "q");
2660 x.aliasAttribute(DefaultFleetInflaterParams.class, "mode", "m");
2661
2662
2663 x.alias("MilRespScr", MilitaryResponseScript.class);
2664 x.aliasAttribute(MilitaryResponseScript.class, "tracker", "t");
2665 x.aliasAttribute(MilitaryResponseScript.class, "params", "p");
2666 x.aliasAttribute(MilitaryResponseScript.class, "elapsed", "e");
2667
2668
2669 x.alias("MilRespP", MilitaryResponseParams.class);
2670 x.aliasAttribute(MilitaryResponseParams.class, "type", "t");
2671 x.aliasAttribute(MilitaryResponseParams.class, "responseReason", "rR");
2672 x.aliasAttribute(MilitaryResponseParams.class, "faction", "f");
2673 x.aliasAttribute(MilitaryResponseParams.class, "actor", "a");
2674 x.aliasAttribute(MilitaryResponseParams.class, "target", "t");
2675 x.aliasAttribute(MilitaryResponseParams.class, "responseFraction", "rF");
2676 x.aliasAttribute(MilitaryResponseParams.class, "responseDuration", "rD");
2677 x.aliasAttribute(MilitaryResponseParams.class, "travelText", "tT");
2678 x.aliasAttribute(MilitaryResponseParams.class, "actionText", "aT");
2679
2680 x.alias("BaseMarketConditionPlugin", BaseMarketConditionPlugin.class);
2681 x.aliasAttribute(BaseMarketConditionPlugin.class, "market", "m");
2682 x.aliasAttribute(BaseMarketConditionPlugin.class, "condition", "c");
2683
2684 x.alias("ResourceDepositsMC", ResourceDepositsCondition.class);
2685
2686
2687
2688 x.alias("LuddicPathCells", LuddicPathCells.class);
2689 x.aliasAttribute(LuddicPathCells.class, "intel", "i");
2690
2691 x.alias("LuddicPathCellsIntel", LuddicPathCellsIntel.class);
2692 x.aliasAttribute(LuddicPathCellsIntel.class, "sleeper", "s");
2693 x.aliasAttribute(LuddicPathCellsIntel.class, "sleeperTimeout", "sT");
2694 x.aliasAttribute(LuddicPathCellsIntel.class, "market", "m");
2695 x.aliasAttribute(LuddicPathCellsIntel.class, "incidentTracker", "iT");
2696 x.aliasAttribute(LuddicPathCellsIntel.class, "random", "r");
2697 x.aliasAttribute(LuddicPathCellsIntel.class, "numIncidentAttempts", "nIA");
2698 x.aliasAttribute(LuddicPathCellsIntel.class, "incidentDelay", "iD");
2699 x.aliasAttribute(LuddicPathCellsIntel.class, "incidentType", "iTy");
2700 x.aliasAttribute(LuddicPathCellsIntel.class, "smuggler", "sm");
2701 x.aliasAttribute(LuddicPathCellsIntel.class, "prevIncident", "pI");
2702 x.aliasAttribute(LuddicPathCellsIntel.class, "sincePrevIncident", "sPI");
2703 x.aliasAttribute(LuddicPathCellsIntel.class, "prevIncidentData", "pID");
2704 x.aliasAttribute(LuddicPathCellsIntel.class, "inertiaTime", "iTi");
2705
2706
2707
2708 x.alias("Spaceport", Spaceport.class);
2709 x.alias("Mining", Mining.class);
2710 x.alias("GroundDefenses", GroundDefenses.class);
2711 x.alias("Refining", Refining.class);
2712 x.alias("MilitaryBase", MilitaryBase.class);
2713 x.alias("Farming", Farming.class);
2714 x.alias("LightIndustry", LightIndustry.class);
2715 x.alias("FuelProduction", FuelProduction.class);
2716 x.alias("HeavyIndustry", HeavyIndustry.class);
2717 x.alias("PlanetaryShield", PlanetaryShield.class);
2718 x.alias("TechMining", TechMining.class);
2719 x.alias("TradeCenter", TradeCenter.class);
2720 x.alias("LionsGuardHQ", LionsGuardHQ.class);
2721 x.alias("Waystation", Waystation.class);
2722 x.alias("Cryosanctum", Cryosanctum.class);
2723 x.alias("Cryorevival", Cryorevival.class);
2724 x.alias("TradeCenter2", com.fs.starfarer.api.impl.campaign.econ.impl.TradeCenter.class);
2725
2726 x.alias("OrbitalStation", OrbitalStation.class);
2727 x.aliasAttribute(OrbitalStation.class, "stationFleet", "sF");
2728 x.aliasAttribute(OrbitalStation.class, "usingExistingStation", "uES");
2729 x.aliasAttribute(OrbitalStation.class, "stationEntity", "sE");
2730
2731
2732 x.alias("EconomyFleetAssignmentAI", EconomyFleetAssignmentAI.class);
2733 x.aliasAttribute(EconomyFleetAssignmentAI.class, "origFaction", "oF");
2734 x.aliasAttribute(EconomyFleetAssignmentAI.class, "factionChangeTracker", "fCT");
2735
2736 x.alias("MercAssignmentAIV2", MercAssignmentAIV2.class);
2737 x.alias("PatrolAssignmentAIV4", PatrolAssignmentAIV4.class);
2738 x.alias("DisposableAggroAssignmentAI", DisposableAggroAssignmentAI.class);
2739
2740 x.alias("DisposableFleetManager", DisposableFleetManager.class);
2741 x.alias("DisposablePirateFleetManager", DisposablePirateFleetManager.class);
2742 x.alias("DisposableLuddicPathFleetManager", DisposableLuddicPathFleetManager.class);
2743
2744
2745 x.alias("PirateBaseIntel", PirateBaseIntel.class);
2746 x.aliasAttribute(PirateBaseIntel.class, "system", "s");
2747 x.aliasAttribute(PirateBaseIntel.class, "market", "m");
2748 x.aliasAttribute(PirateBaseIntel.class, "entity", "e");
2749 x.aliasAttribute(PirateBaseIntel.class, "elapsedDays", "eD");
2750 x.aliasAttribute(PirateBaseIntel.class, "duration", "d");
2751 x.aliasAttribute(PirateBaseIntel.class, "bountyData", "bD");
2752 x.aliasAttribute(PirateBaseIntel.class, "tier", "t");
2753 x.aliasAttribute(PirateBaseIntel.class, "matchedStationToTier", "mSTT");
2754 x.aliasAttribute(PirateBaseIntel.class, "monthlyInterval", "mI");
2755 x.aliasAttribute(PirateBaseIntel.class, "raidTimeoutMonths", "rTM");
2756
2757 x.alias("BaseBountyData", BaseBountyData.class);
2758 x.aliasAttribute(BaseBountyData.class, "bountyElapsedDays", "bED");
2759 x.aliasAttribute(BaseBountyData.class, "bountyDuration", "bD");
2760 x.aliasAttribute(BaseBountyData.class, "baseBounty", "bB");
2761 x.aliasAttribute(BaseBountyData.class, "repChange", "rC");
2762 x.aliasAttribute(BaseBountyData.class, "bountyFaction", "bF");
2763
2764
2765 x.alias("LuddicPathBaseIntel", LuddicPathBaseIntel.class);
2766 x.aliasAttribute(LuddicPathBaseIntel.class, "system", "s");
2767 x.aliasAttribute(LuddicPathBaseIntel.class, "market", "m");
2768 x.aliasAttribute(LuddicPathBaseIntel.class, "entity", "e");
2769 x.aliasAttribute(LuddicPathBaseIntel.class, "elapsedDays", "eD");
2770 x.aliasAttribute(LuddicPathBaseIntel.class, "duration", "d");
2771 x.aliasAttribute(LuddicPathBaseIntel.class, "bountyData", "bD");
2772 x.aliasAttribute(LuddicPathBaseIntel.class, "monthlyInterval", "mI");
2773 x.aliasAttribute(LuddicPathBaseIntel.class, "monthsNoBounty", "mNB");
2774 x.aliasAttribute(LuddicPathBaseIntel.class, "large", "l");
2775 x.aliasAttribute(LuddicPathBaseIntel.class, "random", "r");
2776
2777
2778 x.alias("PirateActivity", PirateActivity.class);
2779 x.aliasAttribute(PirateActivity.class, "intel", "i");
2780
2781 x.alias("PirateActivityIntel", PirateActivityIntel.class);
2782 x.aliasAttribute(PirateActivityIntel.class, "system", "sy");
2783 x.aliasAttribute(PirateActivityIntel.class, "source", "so");
2784
2785
2786 x.alias("LocalResourcesSubmarketPlugin", LocalResourcesSubmarketPlugin.class);
2787 x.alias("CryosleeperEntityPlugin", CryosleeperEntityPlugin.class);
2788
2789 x.alias("BaseIntelPlugin", BaseIntelPlugin.class);
2790 x.aliasAttribute(BaseIntelPlugin.class, "important", "ii");
2791 x.aliasAttribute(BaseIntelPlugin.class, "timestamp", "tt");
2792 x.aliasAttribute(BaseIntelPlugin.class, "neverClicked", "nC");
2793 x.aliasAttribute(BaseIntelPlugin.class, "ended", "ended");
2794 x.aliasAttribute(BaseIntelPlugin.class, "ending", "ending");
2795 x.aliasAttribute(BaseIntelPlugin.class, "endingTimeRemaining", "eTR");
2796 x.aliasAttribute(BaseIntelPlugin.class, "postingLocation", "pLoc");
2797 x.aliasAttribute(BaseIntelPlugin.class, "postingRangeLY", "pRange");
2798
2799 x.alias("BaseMissionIntel", BaseMissionIntel.class);
2800 x.aliasAttribute(BaseMissionIntel.class, "randomCancel", "rC");
2801 x.aliasAttribute(BaseMissionIntel.class, "randomCancelProb", "rCP");
2802 x.aliasAttribute(BaseMissionIntel.class, "missionResult", "mR");
2803 x.aliasAttribute(BaseMissionIntel.class, "missionState", "mS");
2804 x.aliasAttribute(BaseMissionIntel.class, "duration", "dur");
2805 x.aliasAttribute(BaseMissionIntel.class, "elapsedDays", "eD");
2806
2807 x.alias("MissionResult", MissionResult.class);
2808
2809
2810
2811 x.alias("PersonBountyIntel", PersonBountyIntel.class);
2812 x.alias("SystemBountyIntel", SystemBountyIntel.class);
2813 x.alias("TradeFleetDepartureIntel", TradeFleetDepartureIntel.class);
2814 x.alias("FactionHostilityIntel", FactionHostilityIntel.class);
2815 x.alias("ProcurementMissionIntel", ProcurementMissionIntel.class);
2816 x.alias("SurveyPlanetMissionIntel", SurveyPlanetMissionIntel.class);
2817 x.alias("AnalyzeEntityMissionIntel", AnalyzeEntityMissionIntel.class);
2818 x.alias("ProcurementMissionCreator", ProcurementMissionCreator.class);
2819 x.alias("AnalyzeEntityIntelCreator", AnalyzeEntityIntelCreator.class);
2820 x.alias("SurveyPlanetIntelCreator", SurveyPlanetIntelCreator.class);
2821
2822
2823 x.alias("DeliveryMissionIntel", DeliveryMissionIntel.class);
2824 x.alias("CoreDiscoverEntityPlugin", CoreDiscoverEntityPlugin.class);
2825 x.alias("CoreBuildObjectiveTypePicker", CoreBuildObjectiveTypePicker.class);
2826
2827 x.alias("MonthlyReport", MonthlyReport.class);
2828 x.alias("FDNode", FDNode.class);
2829 x.aliasAttribute(FDNode.class, "children", "c");
2830 x.aliasAttribute(FDNode.class, "parent", "p");
2831 x.aliasAttribute(FDNode.class, "name", "n");
2832 x.aliasAttribute(FDNode.class, "icon", "i");
2833 x.aliasAttribute(FDNode.class, "income", "in");
2834 x.aliasAttribute(FDNode.class, "upkeep", "up");
2835 x.aliasAttribute(FDNode.class, "totalIncome", "tI");
2836 x.aliasAttribute(FDNode.class, "totalUpkeep", "tU");
2837 x.aliasAttribute(FDNode.class, "custom", "c1");
2838 x.aliasAttribute(FDNode.class, "custom2", "c2");
2839 x.aliasAttribute(FDNode.class, "mapEntity", "mE");
2840 x.aliasAttribute(FDNode.class, "tooltipCreator", "tC");
2841 x.aliasAttribute(FDNode.class, "tooltipParam", "tP");
2842
2843 x.alias("MonthlyReportNodeTooltipCreator", MonthlyReportNodeTooltipCreator.class);
2844 x.alias("GalatianAcademyStipend", GalatianAcademyStipend.class);
2845 x.alias("WarSimScript", WarSimScript.class);
2846 x.alias("PersonBountyManager", PersonBountyManager.class);
2847 x.alias("SystemBountyManager", SystemBountyManager.class);
2848 x.alias("PirateBaseManager", PirateBaseManager.class);
2849 x.alias("PlayerRelatedPirateBaseManager", PlayerRelatedPirateBaseManager.class);
2850 x.alias("LuddicPathBaseManager", LuddicPathBaseManager.class);
2851 x.alias("HegemonyInspectionManager", HegemonyInspectionManager.class);
2852 x.alias("DecivTracker", DecivTracker.class);
2853 x.alias("MarketDecivData", MarketDecivData.class);
2854 x.aliasAttribute(MarketDecivData.class, "market", "m");
2855 x.aliasAttribute(MarketDecivData.class, "stabilityHistory", "sH");
2856
2857
2858 x.alias("FactionHostilityManager", FactionHostilityManager.class);
2859 x.alias("FactionHostilityIntel", FactionHostilityIntel.class);
2860 x.alias("GenericMissionManager", GenericMissionManager.class);
2861
2862
2863
2864
2865 x.alias("PortsideBarData", PortsideBarData.class);
2866 x.alias("BarEventManager", BarEventManager.class);
2867
2868 x.alias("PirateBaseRumorBarEvent", PirateBaseRumorBarEvent.class);
2869
2870 x.alias("LuddicFarmerBarEvent", LuddicFarmerBarEvent.class);
2871 x.alias("LuddicFarmerBarEventCreator", LuddicFarmerBarEventCreator.class);
2872
2873 x.alias("TriTachLoanBarEvent", TriTachLoanBarEvent.class);
2874 x.alias("TriTachLoanBarEventCreator", TriTachLoanBarEventCreator.class);
2875
2876 x.alias("MercsOnTheRunBarEvent", MercsOnTheRunBarEvent.class);
2877 x.alias("MercsOnTheRunBarEventCreator", MercsOnTheRunBarEventCreator.class);
2878
2879 x.alias("LuddicCraftBarEvent", LuddicCraftBarEvent.class);
2880 x.alias("LuddicCraftBarEventCreator", LuddicCraftBarEventCreator.class);
2881
2882 x.alias("ScientistAICoreBarEvent", ScientistAICoreBarEvent.class);
2883 x.alias("ScientistAICoreBarEventCreator", ScientistAICoreBarEventCreator.class);
2884
2885 x.alias("QuartermasterCargoSwapBarEvent", QuartermasterCargoSwapBarEvent.class);
2886 x.alias("QuartermasterCargoSwapBarEventCreator", QuartermasterCargoSwapBarEventCreator.class);
2887
2888 x.alias("CorruptPLClerkSuppliesBarEvent", CorruptPLClerkSuppliesBarEvent.class);
2889 x.alias("CorruptPLClerkSuppliesBarEventCreator", CorruptPLClerkSuppliesBarEventCreator.class);
2890
2891 x.alias("DiktatLobsterBarEvent", DiktatLobsterBarEvent.class);
2892 x.alias("DiktatLobsterBarEventCreator", DiktatLobsterBarEventCreator.class);
2893
2894 x.alias("DeliveryBarEvent", DeliveryBarEvent.class);
2895 x.alias("DeliveryBarEventCreator", DeliveryBarEventCreator.class);
2896
2897 x.alias("TriTachMajorLoanBarEvent", TriTachMajorLoanBarEvent.class);
2898 x.alias("TriTachMajorLoanBarEventCreator", TriTachMajorLoanBarEventCreator.class);
2899
2900 x.alias("TriTachLoanIncentiveScript", TriTachLoanIncentiveScript.class);
2901 x.alias("DeliveryFailureConsequences", DeliveryFailureConsequences.class);
2902
2903
2904 x.alias("EconomyFleetRouteManager", EconomyFleetRouteManager.class);
2905 x.alias("ShippingDisruption", ShippingDisruption.class);
2906
2907
2908 x.alias("DistressCallIntel", DistressCallIntel.class);
2909 x.alias("HyperStormBoost", HyperStormBoost.class);
2910 x.alias("AsteroidImpact", AsteroidImpact.class);
2911
2912 x.alias("CoronalTapParticleScript", CoronalTapParticleScript.class);
2913 x.alias("CargoPodsResponse", CargoPodsResponse.class);
2914
2915
2916 x.alias("GateData", GateData.class);
2917 x.alias("GateEntityPlugin", GateEntityPlugin.class);
2918 x.aliasAttribute(GateEntityPlugin.class, "beingUsedFader", "bUF");
2919 x.aliasAttribute(GateEntityPlugin.class, "glowFader", "gF");
2920 x.aliasAttribute(GateEntityPlugin.class, "madeActive", "mA");
2921 x.aliasAttribute(GateEntityPlugin.class, "addedIntel", "aI");
2922 x.aliasAttribute(GateEntityPlugin.class, "showBeingUsedDur", "sBUD");
2923 x.aliasAttribute(GateEntityPlugin.class, "accumulatedTransitDistLY", "aTDLY");
2924 x.aliasAttribute(GateEntityPlugin.class, "inUseAngle", "iUA");
2925
2926 x.alias("BaseMissionHub", BaseMissionHub.class);
2927 x.aliasAttribute(BaseMissionHub.class, "timeout", "to");
2928 x.aliasAttribute(BaseMissionHub.class, "recentlyAcceptedTimeout", "rAT");
2929 x.aliasAttribute(BaseMissionHub.class, "creators", "cr");
2930 x.aliasAttribute(BaseMissionHub.class, "person", "p");
2931 x.aliasAttribute(BaseMissionHub.class, "seed", "seed");
2932 x.aliasAttribute(BaseMissionHub.class, "lastUpdated", "lU");
2933 x.aliasAttribute(BaseMissionHub.class, "lastUpdatedSeeds", "lUS");
2934 x.aliasAttribute(BaseMissionHub.class, "daysSinceLastUpdate", "dSLU");
2935
2936 x.alias("BaseHubMissionCreator", BaseHubMissionCreator.class);
2937 x.aliasAttribute(BaseHubMissionCreator.class, "numCompleted", "nC");
2938 x.aliasAttribute(BaseHubMissionCreator.class, "numFailed", "nF");
2939 x.aliasAttribute(BaseHubMissionCreator.class, "seed", "seed");
2940 x.aliasAttribute(BaseHubMissionCreator.class, "specId", "sId");
2941 x.aliasAttribute(BaseHubMissionCreator.class, "wasAutoAdded", "wA");
2942 x.aliasAttribute(BaseHubMissionCreator.class, "isActive", "iA");
2943
2944 x.alias("BlueprintSpecialData", BlueprintSpecialData.class);
2945 x.alias("HubMissionWithTriggers", HubMissionWithTriggers.class);
2946
2947 x.alias("BaseHubMission", BaseHubMission.class);
2948 x.alias("GateIntel", GateIntel.class);
2949 x.alias("BreadcrumbIntel", BreadcrumbIntel.class);
2950 x.alias("BreadcrumbIntelV2", BreadcrumbIntelV2.class);
2951 x.alias("WarningBeaconIntel", WarningBeaconIntel.class);
2952 x.alias("DelayedFleetEncounter", DelayedFleetEncounter.class);
2953 x.alias("MissionTrigger", MissionTrigger.class);
2954 x.alias("PunitiveExpeditionManager", PunitiveExpeditionManager.class);
2955 x.alias("PunExData", PunExData.class);
2956 x.alias("LuddicPathBaseBarEvent", LuddicPathBaseBarEvent.class);
2957 x.alias("HubMissionBarEventWrapper", HubMissionBarEventWrapper.class);
2958 x.alias("HistorianBarEvent", HistorianBarEvent.class);
2959 x.alias("RemnantNexusIntel", RemnantNexusIntel.class);
2960 x.alias("SalvorsTallyIntel", SalvorsTallyIntel.class);
2961 x.alias("CryosleeperIntel", CryosleeperIntel.class);
2962 x.alias("HypershuntIntel", HypershuntIntel.class);
2963 x.alias("SimUpdateIntel", SimUpdateIntel.class);
2964 x.alias("CargoPodsIntel", CargoPodsIntel.class);
2965 x.alias("WormholeIntel", WormholeIntel.class);
2966
2967 x.alias("SpecBarEventCreator", SpecBarEventCreator.class);
2968 x.aliasAttribute(SpecBarEventCreator.class, "specId", "sId");
2969 x.aliasAttribute(SpecBarEventCreator.class, "wasAutoAdded", "wAA");
2970
2971 x.alias("PlanetaryShieldBarEventCreator", PlanetaryShieldBarEventCreator.class);
2972 x.alias("HistorianBarEventCreator", HistorianBarEventCreator.class);
2973
2974 x.alias("PLTextEntry", PLTextEntry.class);
2975 x.aliasAttribute(PLTextEntry.class, "text", "text");
2976 x.aliasAttribute(PLTextEntry.class, "timestamp", "ts");
2977
2978 x.alias("PLStatLevel", PLStatLevel.class);
2979 x.alias("PLStatCredits", PLStatCredits.class);
2980 x.alias("PLStatFleet", PLStatFleet.class);
2981 x.alias("PLStatSupplies", PLStatSupplies.class);
2982 x.alias("PLStatFuel", PLStatFuel.class);
2983 x.alias("PLStatCargo", PLStatCargo.class);
2984 x.alias("PLStatCrew", PLStatCrew.class);
2985 x.alias("PLStatMarines", PLStatMarines.class);
2986 x.alias("PLStatColonies", PLStatColonies.class);
2987 x.alias("PlaythroughLog", PlaythroughLog.class);
2988
2989 x.alias("BaseCustomBounty", BaseCustomBounty.class);
2990 x.alias("AggregateBountyData", AggregateBountyData.class);
2991
2992 x.alias("HistorianData", HistorianData.class);
2993 x.alias("DonationOfferCreator", DonationOfferCreator.class);
2994 x.alias("ShipBlueprintOfferCreator", ShipBlueprintOfferCreator.class);
2995 x.alias("WeaponBlueprintOfferCreator", WeaponBlueprintOfferCreator.class);
2996 x.alias("FighterBlueprintOfferCreator", FighterBlueprintOfferCreator.class);
2997 x.alias("SpecialItemOfferCreator", SpecialItemOfferCreator.class);
2998
2999 x.alias("StageConnection", StageConnection.class);
3000 x.alias("DecivIntel", DecivIntel.class);
3001 x.alias("PlayerFleetPersonnelTracker", PlayerFleetPersonnelTracker.class);
3002 x.alias("ContactIntel", ContactIntel.class);
3003 x.alias("ProductionReportIntel", ProductionReportIntel.class);
3004 x.alias("AdminData", AdminData.class);
3005 x.alias("FieldRepairsScript", FieldRepairsScript.class);
3006 x.alias("CommSnifferIntel", CommSnifferIntel.class);
3007
3008
3009
3010 x.alias("PersonalFleetHoracioCaden", PersonalFleetHoracioCaden.class);
3011 x.alias("PersonalFleetOxanaHyder", PersonalFleetOxanaHyder.class);
3012 x.alias("MiscFleetRouteManager", MiscFleetRouteManager.class);
3013 x.alias("EncounterManager", EncounterManager.class);
3014
3015 x.alias("AddedStream", AddedStream.class);
3016 x.aliasAttribute(AddedStream.class, "terrain", "tn");
3017 x.aliasAttribute(AddedStream.class, "plugin", "p");
3018 x.aliasAttribute(AddedStream.class, "from", "f");
3019 x.aliasAttribute(AddedStream.class, "to", "t");
3020 x.aliasAttribute(AddedStream.class, "control", "c");
3021 x.aliasAttribute(AddedStream.class, "timestamp", "ts");
3022
3023
3024 x.alias("FactionCommissionIntel", FactionCommissionIntel.class);
3025 x.alias("FCI-RepChangeData", RepChangeData.class);
3026
3027 x.alias("WeaponBlueprintOffer", WeaponBlueprintOffer.class);
3028 x.alias("HostileActivityEventIntel", HostileActivityEventIntel.class);
3029 x.alias("ScientistAICoreIntel", ScientistAICoreIntel.class);
3030 x.alias("GAAtTheGates", GAAtTheGates.class);
3031 x.alias("GATransverseJump", GATransverseJump.class);
3032 x.alias("LuddicShrineIntel", LuddicShrineIntel.class);
3033 x.alias("HyperspaceTopographyEventIntel", LuddicShrineIntel.class);
3034 x.alias("DisposableHostileActivityFleetManager", DisposableHostileActivityFleetManager.class);
3035
3036 x.alias("TopographicDataSpecialData", TopographicDataSpecialData.class);
3037 x.aliasAttribute(TopographicDataSpecialData.class, "points", "p");
3038
3039 x.alias("ZigLeashAssignmentAI", ZigLeashAssignmentAI.class);
3040 x.alias("ZigFIDConfig", ZigFIDConfig.class);
3041
3042 x.alias("ShipQuality", ShipQuality.class);
3043
3044 x.alias("TriggerFleetAssignmentAI", TriggerFleetAssignmentAI.class);
3045 x.alias("MissionFleetAutoDespawn", MissionFleetAutoDespawn.class);
3046 x.alias("BHM-DefeatTriggerAdded", DefeatTriggerAdded.class);
3047 x.alias("BHM-MakeNonStoryCriticalAction", MakeNonStoryCriticalAction.class);
3048 x.alias("BHM-SetFleetFlagAction", SetFleetFlagAction.class);
3049 x.alias("BHM-StageData", StageData.class);
3050 x.alias("BHM-ImportanceData", ImportanceData.class);
3051
3052 x.alias("BHM-VS", VariableSet.class);
3053
3054 x.alias("BaseEventIntel", BaseEventIntel.class);
3055
3056 x.alias("BEI-EventStageData", EventStageData.class);
3057// x.aliasAttribute(EventStageData.class, "id", "");
3058// x.aliasAttribute(EventStageData.class, "progress", "");
3059// x.aliasAttribute(EventStageData.class, "isOneOffEvent", "");
3060// x.aliasAttribute(EventStageData.class, "wasEverReached", "");
3061// x.aliasAttribute(EventStageData.class, "isRepeatable", "");
3062// x.aliasAttribute(EventStageData.class, "sendIntelUpdateOnReaching", "");
3063// x.aliasAttribute(EventStageData.class, "hideIconWhenPastStageUnlessLastActive", "");
3064// x.aliasAttribute(EventStageData.class, "keepIconBrightWhenLaterStageReached", "");
3065// x.aliasAttribute(EventStageData.class, "iconSize", "");
3066// x.aliasAttribute(EventStageData.class, "randomized", "");
3067// x.aliasAttribute(EventStageData.class, "randomType", "");
3068// x.aliasAttribute(EventStageData.class, "progressToResetAt", "");
3069// x.aliasAttribute(EventStageData.class, "progressToRollAt", "");
3070// x.aliasAttribute(EventStageData.class, "rollData", "");
3071
3072 x.alias("OSGRec", OfficerSkillGainRecord.class);
3073 x.aliasAttribute(OfficerSkillGainRecord.class, "personId", "p");
3074 x.aliasAttribute(OfficerSkillGainRecord.class, "skillId", "s");
3075 x.aliasAttribute(OfficerSkillGainRecord.class, "elite", "e");
3076
3077 x.alias("SModRec", SModRecord.class);
3078 x.aliasAttribute(SModRecord.class, "member", "m");
3079 x.aliasAttribute(SModRecord.class, "smods", "sm");
3080 x.aliasAttribute(SModRecord.class, "spSpent", "sp");
3081 x.aliasAttribute(SModRecord.class, "bonusXPFractionGained", "bxp");
3082 x.aliasAttribute(SModRecord.class, "timestamp", "ts");
3083
3084
3085 x.alias("RouteFleetAssignmentAI", RouteFleetAssignmentAI.class);
3086 x.alias("RaidIntel", RaidIntel.class);
3087 x.alias("SlipstreamManager-StreamData", StreamData.class);
3088
3089
3090 //x.alias("AddedStream", AddedStream.class);
3091 //x.aliasAttribute(BaseHubMissionCreator.class, "", "");
3092
3093 }
3094
3095// // problem: adding a new field could break saves
3096// public static void autoAlias(XStream x, Class c, String name, int level) {
3097// x.alias(name, c);
3098//
3099// char curr = 'a';
3100// for (Field f : c.getFields()) {
3101// if (Modifier.isTransient(f.getModifiers())) continue;
3102// String alias = "" + curr;
3103// if (level > 0) alias += level;
3104// x.alias("", c);
3105// curr++;
3106// }
3107// }
3108
3109
3110
3111
3112
3113 @Override
3115 if (ship.isFighter()) {
3116 if (ship.getHullSpec().hasTag(Tags.THREAT_SWARM_AI)) {
3117 return new PluginPick<ShipAIPlugin>(new ThreatSwarmAI(ship), PickPriority.CORE_SPECIFIC);
3118 }
3119 if (ship.getHullSpec().hasTag(Tags.DWELLER_VORTEX)) {
3120 return new PluginPick<ShipAIPlugin>(new ShroudedVortexAI(ship), PickPriority.CORE_SPECIFIC);
3121 }
3122 if (ship.getHullSpec().hasTag(Tags.DWELLER_EJECTA)) {
3123 return new PluginPick<ShipAIPlugin>(new ShroudedEjectaAI(ship), PickPriority.CORE_SPECIFIC);
3124 }
3125 return null;
3126 }
3127
3128
3129 if (ship.getHullSpec().hasTag(Tags.THREAT)) {
3130 ShipAIConfig config = new ShipAIConfig();
3131
3132 //boolean overseer = ship.getHullSpec().getHullId().equals("overseer_unit");
3133
3134 if (ship.getHullSpec().hasTag(Tags.THREAT_TIMID)) {
3135 config.personalityOverride = Personalities.TIMID;
3136 } else if (ship.getHullSpec().hasTag(Tags.THREAT_CAUTIOUS)) {
3137 config.personalityOverride = Personalities.CAUTIOUS;
3138 } else if (ship.getHullSpec().hasTag(Tags.THREAT_AGGRESSIVE)) {
3139 config.personalityOverride = Personalities.AGGRESSIVE;
3140// config.alwaysStrafeOffensively = true;
3141// config.backingOffWhileNotVentingAllowed = false;
3142// config.turnToFaceWithUndamagedArmor = false;
3143// config.burnDriveIgnoreEnemies = true;
3144 } else if (ship.getHullSpec().hasTag(Tags.THREAT_RECKLESS)) {
3145 config.personalityOverride = Personalities.RECKLESS;
3146 config.alwaysStrafeOffensively = true;
3147 config.backingOffWhileNotVentingAllowed = false;
3148 config.turnToFaceWithUndamagedArmor = false;
3149 config.burnDriveIgnoreEnemies = true;
3150 } else {
3151 config.personalityOverride = Personalities.STEADY;
3152 }
3153
3154 PickPriority priority = PickPriority.CORE_SET;
3155 return new PluginPick<ShipAIPlugin>(Global.getSettings().createDefaultShipAI(ship, config), priority);
3156 }
3157
3158 if (ship.getHullSpec().hasTag(Tags.DWELLER)) {
3159 ShipAIConfig config = new ShipAIConfig();
3160
3161 if (ship.getHullSpec().hasTag(Tags.DWELLER_TIMID)) {
3162 config.personalityOverride = Personalities.TIMID;
3163 } else if (ship.getHullSpec().hasTag(Tags.DWELLER_CAUTIOUS)) {
3164 config.personalityOverride = Personalities.CAUTIOUS;
3165 } else if (ship.getHullSpec().hasTag(Tags.DWELLER_AGGRESSIVE)) {
3166 config.personalityOverride = Personalities.AGGRESSIVE;
3167 } else if (ship.getHullSpec().hasTag(Tags.DWELLER_RECKLESS)) {
3168 config.personalityOverride = Personalities.RECKLESS;
3169 config.alwaysStrafeOffensively = true;
3170 config.backingOffWhileNotVentingAllowed = false;
3171 config.turnToFaceWithUndamagedArmor = false;
3172 config.burnDriveIgnoreEnemies = true;
3173 } else {
3174 config.personalityOverride = Personalities.STEADY;
3175 }
3176
3177 PickPriority priority = PickPriority.CORE_SET;
3178 return new PluginPick<ShipAIPlugin>(Global.getSettings().createDefaultShipAI(ship, config), priority);
3179 }
3180
3181
3182
3183 Set<String> derelicts = new HashSet<String>();
3184 derelicts.add("warden");
3185 derelicts.add("defender");
3186 derelicts.add("picket");
3187 derelicts.add("sentry");
3188 derelicts.add("berserker");
3189 derelicts.add("bastillion");
3190
3191 boolean zigguratOnEnemySide = ship.getHullSpec().getHullId().equals("ziggurat") &&
3192 (member == null || member.getFleetCommander() == null || !member.getFleetCommander().isPlayer());
3193
3194 String hullId = ship.getHullSpec().getHullId();
3195 if (!zigguratOnEnemySide &&
3196 !derelicts.contains(hullId) && !Misc.isAutomated(ship.getVariant())) return null;
3197
3198 //HullSize size = ship.getHullSize();
3199
3200 ShipAIConfig config = new ShipAIConfig();
3201 config.alwaysStrafeOffensively = true;
3202 config.backingOffWhileNotVentingAllowed = false;
3203 config.turnToFaceWithUndamagedArmor = false;
3204 config.burnDriveIgnoreEnemies = true;
3205
3206 boolean carrier = false;
3207 if (ship != null && ship.getVariant() != null) {
3208 carrier = ship.getVariant().isCarrier() && !ship.getVariant().isCombat();
3209 }
3210 if (carrier) {
3211 config.personalityOverride = Personalities.AGGRESSIVE;
3212 config.backingOffWhileNotVentingAllowed = true;
3213 } else {
3214 config.personalityOverride = Personalities.RECKLESS;
3215 }
3216
3217 PickPriority priority = PickPriority.CORE_SET;
3218 if (zigguratOnEnemySide) {
3219 priority = PickPriority.CORE_SPECIFIC;
3220 }
3221 return new PluginPick<ShipAIPlugin>(Global.getSettings().createDefaultShipAI(ship, config), priority);
3222 }
3223
3224// public PluginPick<MissileAIPlugin> pickMissileAI(final MissileAPI missile, final ShipAPI launchingShip) {
3225// if (missile.getWeaponSpec() != null && missile.getWeaponSpec().getWeaponId().equals("motelauncher")) {
3226// return new PluginPick<MissileAIPlugin>(new MoteAIScript(missile), PickPriority.MOD_GENERAL);
3227// }
3228// if (missile.getWeaponSpec() != null && missile.getWeaponSpec().getWeaponId().equals("motelauncher_hf")) {
3229// return new PluginPick<MissileAIPlugin>(new MoteAIScript(missile), PickPriority.MOD_GENERAL);
3230// }
3231// return null;
3232// }
3233
3236 return;
3237 }
3238
3239 SectorAPI engine = Global.getSector();
3240 engine.getCharacterData().setSavefileVersion("0.95.1a");
3241
3242 for (AdminData admin : engine.getCharacterData().getAdmins()) {
3243 convertPersonSkillsTo0951a(admin.getPerson());
3244 }
3245
3246 List<LocationAPI> all = new ArrayList<LocationAPI>();
3247 all.add(engine.getHyperspace());
3248 all.addAll(engine.getStarSystems());
3249 for (LocationAPI curr : all) {
3250 for (CampaignFleetAPI fleet : curr.getFleets()) {
3251 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
3252 convertPersonSkillsTo0951a(member.getCaptain());
3253 if (fleet.isPlayerFleet() && member.getCaptain().isAICore()) {
3254 String aiCoreId = member.getCaptain().getAICoreId();
3255 boolean alpha = Commodities.ALPHA_CORE.equals(aiCoreId);
3256 boolean beta = Commodities.BETA_CORE.equals(aiCoreId);
3257 boolean gamma = Commodities.GAMMA_CORE.equals(aiCoreId);
3258
3259 int points = 0;
3260 float mult = 1f;
3261 if (alpha) {
3264 } else if (beta) {
3267 } else if (gamma) {
3270 }
3271 member.getCaptain().getMemoryWithoutUpdate().unset(AICoreOfficerPluginImpl.AUTOMATED_POINTS_VALUE);
3272 member.getCaptain().getMemoryWithoutUpdate().set(AICoreOfficerPluginImpl.AUTOMATED_POINTS_MULT, mult);
3273 }
3274 }
3275 }
3276 }
3277
3278 for (LocationAPI curr : all) {
3279 for (SectorEntityToken entity : curr.getAllEntities()) {
3280 if (entity.getMarket() != null && entity.getMarket().getAdmin() != null) {
3281 convertPersonSkillsTo0951a(entity.getMarket().getAdmin());
3282 }
3283 if (entity.getMemoryWithoutUpdate() != null && entity.getMemoryWithoutUpdate().contains("$defenderFleet")) {
3284 CampaignFleetAPI fleet = (CampaignFleetAPI) entity.getMemoryWithoutUpdate().get("$defenderFleet");
3285 if (fleet != null) {
3286 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
3287 convertPersonSkillsTo0951a(member.getCaptain());
3288 }
3289 }
3290 }
3291 }
3292 }
3293
3295 int skillPoints = 0;
3296 int storyPoints = 0;
3297 for (SkillLevelAPI sl : stats.getSkillsCopy()) {
3298 int level = (int) sl.getLevel();
3299 if (level > 0) skillPoints++;
3300 if (level > 1) storyPoints++;
3301 for (int i = 0; i < level; i++) {
3302 stats.decreaseSkill(sl.getSkill().getId());
3303 }
3304 }
3305 stats.setPoints(stats.getPoints() + skillPoints);
3306 stats.setStoryPoints(stats.getStoryPoints() + storyPoints);
3309
3311 int frames = 0;
3312 boolean done = false;
3313 public boolean runWhilePaused() {
3314 return true;
3315 }
3316 public boolean isDone() {
3317 return done;
3318 }
3319 public void advance(float amount) {
3320 frames++;
3321 if (frames > 2 && !Global.getSector().getCampaignUI().isShowingDialog()) {
3322 Global.getSector().getCampaignUI().showConfirmDialog("Your skills have been reset "
3323 + "to accomodate the new skill system. Skill and story points have been refunded.\n\n"
3324 + "Officer, administrator, and AI core skills have been adjusted for the new system.",
3325 "Ok", null, null, null);
3326 done = true;
3327 }
3328 }
3329 });
3330 }
3331
3332 @SuppressWarnings("deprecation")
3334 if (person == null || person.isPlayer() || person.isDefault()) return;
3335
3336 MutableCharacterStatsAPI stats = person.getStats();
3337 stats.setSkipRefresh(true);
3338
3341
3344
3347
3350
3353
3354
3359
3360 if (person.isAICore() && stats.hasSkill(Skills.INDUSTRIAL_PLANNING)) {
3361 stats.setSkillLevel(Skills.HYPERCOGNITION, 1);
3362 }
3363
3364 stats.setSkipRefresh(false);
3365
3366 }
3367
3368 public void removeSkill(String id, PersonAPI person) {
3369 for (int i = 0; i < 10; i++) {
3370 person.getStats().decreaseSkill(id);
3371 }
3372 }
3373 public void convertSkill(String from, String to, PersonAPI person) {
3374 int level = (int) person.getStats().getSkillLevel(from);
3375 if (level > 0) {
3376 for (int i = 0; i < level; i++) {
3377 person.getStats().decreaseSkill(from);
3378 }
3379 person.getStats().setSkillLevel(to, level);
3380 }
3381 }
3382
3383}
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
static SettingsAPI getSettings()
Definition Global.java:57
static SectorAPI getSector()
Definition Global.java:65
void convertSkill(String from, String to, PersonAPI person)
static int getPortraitCount(List< PersonAPI > people, PersonAPI person)
PluginPick< ShipAIPlugin > pickShipAI(FleetMemberAPI member, ShipAPI ship)
static void createInitialPeople(MarketAPI market, Random random)
static void addSkillsAndAssignAdmin(MarketAPI market, PersonAPI admin)
static PersonAPI getPerson(String id)
Definition People.java:107
static final String THEME_CORE_UNPOPULATED
Definition Tags.java:140
static List< MarketAPI > getMarketsInLocation(LocationAPI location, String factionId)
Definition Misc.java:936
static boolean isAutomated(MutableShipStatsAPI stats)
Definition Misc.java:5491
static void setAllPlanetsSurveyed(StarSystemAPI system, boolean setRuinsExplored)
Definition Misc.java:2892
static AsteroidSource getAsteroidSource(SectorEntityToken asteroid)
Definition Misc.java:2261
static void makeStoryCritical(String marketId, String reason)
Definition Misc.java:6243
static void clearAsteroidSource(SectorEntityToken asteroid)
Definition Misc.java:2270
SkillSpecAPI getSkillSpec(String skillId)
List< String > getSortedSkillIds()
ShipHullSpecAPI getHullSpec(String hullId)
HullModSpecAPI getHullModSpec(String modId)
IndustrySpecAPI getIndustrySpec(String industryId)
ShipAIPlugin createDefaultShipAI(ShipAPI ship, ShipAIConfig config)
FighterWingSpecAPI getFighterWingSpec(String wingId)
WeaponSpecAPI getWeaponSpec(String weaponId)
boolean showConfirmDialog(String message, String ok, String cancel, Script onOk, Script onCancel)
void setSavefileVersion(String skillVersion)
List< FleetMemberAPI > getMembersListCopy()
List< GenericPlugin > getPluginsOfClass(Class c)
void addOrbitalJunk(SectorEntityToken focus, String junkType, int num, float minSize, float maxSize, float orbitRadius, float width, float minOrbitDays, float maxOrbitDays, float minSpin, float maxSpin)
void addScript(EveryFrameScript script)
boolean hasScript(Class<?> clazz)
List< StarSystemAPI > getStarSystems()
List< SectorEntityToken > getEntitiesWithTag(String tag)
GenericPluginManagerAPI getGenericPlugins()
MutableCharacterStatsAPI getPlayerStats()
StarSystemAPI getStarSystem(String name)
void addTransientScript(EveryFrameScript script)
SectorEntityToken getEntityById(String id)
ListenerManagerAPI getListenerManager()
List< LocationAPI > getAllLocations()
ImportantPeopleAPI getImportantPeople()
void setEnteredByPlayer(boolean enteredByPlayer)
void set(String key, Object value)
void addTokenReplacementGenerator(RuleTokenReplacementGeneratorPlugin generator)
PersonDataAPI getData(PersonAPI person)
void checkOutPerson(PersonAPI person, String reasonId)
void setPortraitSprite(String portraitSprite)
void setImportanceAndVoice(PersonImportance importance, Random random)
MutableCharacterStatsAPI getStats()
void reportAsteroidPersisted(SectorEntityToken asteroid)