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