1package com.fs.starfarer.api.impl.campaign.missions.hub;
3import java.util.ArrayList;
4import java.util.Arrays;
5import java.util.EnumSet;
7import java.util.Random;
9import org.lwjgl.util.vector.Vector2f;
11import com.fs.starfarer.api.EveryFrameScript;
12import com.fs.starfarer.api.Global;
13import com.fs.starfarer.api.Script;
14import com.fs.starfarer.api.campaign.CampaignFleetAPI;
15import com.fs.starfarer.api.campaign.CargoAPI;
16import com.fs.starfarer.api.campaign.FactionAPI;
17import com.fs.starfarer.api.campaign.FactionAPI.ShipPickMode;
18import com.fs.starfarer.api.campaign.FactionAPI.ShipPickParams;
19import com.fs.starfarer.api.campaign.FactionDoctrineAPI;
20import com.fs.starfarer.api.campaign.FleetInflater;
21import com.fs.starfarer.api.campaign.LocationAPI;
22import com.fs.starfarer.api.campaign.PlanetAPI;
23import com.fs.starfarer.api.campaign.SectorEntityToken;
24import com.fs.starfarer.api.campaign.SpecialItemData;
25import com.fs.starfarer.api.campaign.StarSystemAPI;
26import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
27import com.fs.starfarer.api.campaign.econ.MarketAPI;
28import com.fs.starfarer.api.campaign.rules.HasMemory;
29import com.fs.starfarer.api.campaign.rules.MemoryAPI;
30import com.fs.starfarer.api.characters.AbilityPlugin;
31import com.fs.starfarer.api.characters.PersonAPI;
32import com.fs.starfarer.api.combat.ShipVariantAPI;
33import com.fs.starfarer.api.fleet.FleetMemberAPI;
34import com.fs.starfarer.api.fleet.ShipRolePick;
35import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin.DerelictShipData;
36import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin.DerelictType;
37import com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflater;
38import com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflaterParams;
39import com.fs.starfarer.api.impl.campaign.fleets.FleetFactoryV3;
40import com.fs.starfarer.api.impl.campaign.fleets.FleetParamsV3;
41import com.fs.starfarer.api.impl.campaign.ids.Abilities;
42import com.fs.starfarer.api.impl.campaign.ids.Conditions;
43import com.fs.starfarer.api.impl.campaign.ids.Factions;
44import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
45import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
46import com.fs.starfarer.api.impl.campaign.ids.ShipRoles;
47import com.fs.starfarer.api.impl.campaign.ids.Skills;
48import com.fs.starfarer.api.impl.campaign.missions.hub.MissionTrigger.TriggerAction;
49import com.fs.starfarer.api.impl.campaign.missions.hub.MissionTrigger.TriggerActionContext;
50import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
51import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantSeededFleetManager;
52import com.fs.starfarer.api.impl.campaign.procgen.themes.SalvageSpecialAssigner;
53import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BaseSalvageSpecial;
54import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.TransmitterTrapSpecial;
55import com.fs.starfarer.api.impl.campaign.skills.OfficerTraining;
56import com.fs.starfarer.api.impl.campaign.terrain.StarCoronaTerrainPlugin;
57import com.fs.starfarer.api.util.Misc;
58import com.fs.starfarer.api.util.WeightedRandomPicker;
70 public static enum FleetSize {
81 public float maxFPFraction;
82 private FleetSize(
float maxFPFraction) {
83 this.maxFPFraction = maxFPFraction;
86 private static FleetSize [] vals = values();
87 public FleetSize next() {
88 int index = this.ordinal() + 1;
89 if (index >= vals.length) index = vals.length - 1;
92 public FleetSize prev() {
93 int index = this.ordinal() - 1;
94 if (index < 0) index = 0;
99 public static enum FleetQuality {
110 public float qualityMod;
112 private FleetQuality(
float qualityMod,
int numSMods) {
113 this.qualityMod = qualityMod;
114 this.numSMods = numSMods;
117 private static FleetQuality [] vals = values();
118 public FleetQuality next() {
119 int index = this.ordinal() + 1;
120 if (index >= vals.length) index = vals.length - 1;
123 public FleetQuality prev() {
124 int index = this.ordinal() - 1;
125 if (index < 0) index = 0;
130 public static enum OfficerNum {
138 private static OfficerNum [] vals = values();
139 public OfficerNum next() {
140 int index = this.ordinal() + 1;
141 if (index >= vals.length) index = vals.length - 1;
144 public OfficerNum prev() {
145 int index = this.ordinal() - 1;
146 if (index < 0) index = 0;
151 public static enum OfficerQuality {
163 private static OfficerQuality [] vals = values();
164 public OfficerQuality next() {
165 int index = this.ordinal() + 1;
166 if (index >= vals.length) index = vals.length - 1;
169 public OfficerQuality prev() {
170 int index = this.ordinal() - 1;
171 if (index < 0) index = 0;
176 public static class FleetAddTugs
implements TriggerAction {
178 public FleetAddTugs(
int numTugs) {
179 this.numTugs = numTugs;
181 public void doAction(TriggerActionContext context) {
182 if (context.fleet !=
null) {
188 public static class UnhideCommListing
implements TriggerAction {
190 public UnhideCommListing(
PersonAPI person) {
191 this.person = person;
194 public void doAction(TriggerActionContext context) {
210 public static class HideCommListing
implements TriggerAction {
212 public HideCommListing(
PersonAPI person) {
213 this.person = person;
216 public void doAction(TriggerActionContext context) {
229 public static class MovePersonToMarket
implements TriggerAction {
232 protected boolean alwaysAddToComms;
234 public MovePersonToMarket(
PersonAPI person,
MarketAPI market,
boolean alwaysAddToComms) {
236 this.person = person;
237 this.market = market;
238 this.alwaysAddToComms = alwaysAddToComms;
242 public void doAction(TriggerActionContext context) {
248 public static class DespawnEntityAction
implements TriggerAction {
251 this.entity = entity;
254 public void doAction(TriggerActionContext context) {
259 public static class MakeDiscoverableAction
implements TriggerAction {
260 protected float range;
262 public MakeDiscoverableAction(
float range,
float xp) {
267 public void doAction(TriggerActionContext context) {
274 public static class SpawnShipGraveyardAction
implements TriggerAction {
275 protected String factionId;
276 protected int minShips;
277 protected int maxShips;
278 protected LocData data;
279 public SpawnShipGraveyardAction(String factionId,
int minShips,
int maxShips, LocData data) {
280 this.factionId = factionId;
281 this.minShips = minShips;
282 this.maxShips = maxShips;
286 public void doAction(TriggerActionContext context) {
291 public static class SpawnDebrisFieldAction
implements TriggerAction {
292 protected float radius;
293 protected float density;
294 protected LocData data;
296 public SpawnDebrisFieldAction(
float radius,
float density, LocData data) {
297 this.radius = radius;
298 this.density = density;
302 public void doAction(TriggerActionContext context) {
304 context.entity = entity;
309 public static class SpawnEntityAction
implements TriggerAction {
310 protected String entityId;
311 protected LocData data;
313 public SpawnEntityAction(String entityId, LocData data) {
314 this.entityId = entityId;
318 public void doAction(TriggerActionContext context) {
320 context.entity = entity;
324 public static class SpawnDerelictAction
implements TriggerAction {
325 protected String hullId;
326 protected String factionId;
327 protected DerelictType type;
328 protected DerelictShipData shipData;
329 protected LocData data;
335 public SpawnDerelictAction(String hullId, String factionId, DerelictType type, LocData data) {
336 this.hullId = hullId;
337 this.factionId = factionId;
342 public SpawnDerelictAction(DerelictType type, LocData data) {
346 public SpawnDerelictAction(DerelictShipData shipData, LocData data) {
347 this.shipData = shipData;
351 public void doAction(TriggerActionContext context) {
353 if (hullId !=
null) {
355 }
else if (factionId !=
null) {
357 }
else if (shipData !=
null) {
362 context.entity = entity;
368 public static class SpawnFleetNearAction
implements TriggerAction {
370 protected float range;
373 this.entity = entity;
377 public void doAction(TriggerActionContext context) {
383 public static class SetFleetFactionAction
implements TriggerAction {
384 protected String factionId;
386 public SetFleetFactionAction(String factionId) {
387 this.factionId = factionId;
390 public void doAction(TriggerActionContext context) {
395 public static class SetEntityToPickedJumpPoint
implements TriggerAction {
396 public SetEntityToPickedJumpPoint() {
399 public void doAction(TriggerActionContext context) {
400 context.entity = context.jumpPoint;
404 public static class FleetMakeImportantAction
implements TriggerAction {
405 protected String flag;
406 protected Enum[] stages;
407 public FleetMakeImportantAction(String flag, Enum ... stages) {
409 this.stages = stages;
411 public void doAction(TriggerActionContext context) {
415 if (stages !=
null && Arrays.asList(stages).contains(bhm.
getCurrentStage())) {
436 public static class EntityMakeImportantAction
implements TriggerAction {
437 protected String flag;
438 protected Enum[] stages;
439 public EntityMakeImportantAction(String flag, Enum ... stages) {
441 this.stages = stages;
443 public void doAction(TriggerActionContext context) {
465 public static class SetFleetFlagsWithReasonAction
implements TriggerAction {
466 protected String[] flags;
467 protected String reason;
468 protected boolean permanent;
470 public SetFleetFlagsWithReasonAction(String reason,
boolean permanent, String ... flags) {
471 this.permanent = permanent;
473 this.reason = reason;
476 public void doAction(TriggerActionContext context) {
478 for (String flag : flags) {
480 flag, reason,
true, -1f);
482 if (context.makeAllFleetFlagsPermanent) {
486 if (!permanent && bhm !=
null) {
487 String requiredKey = flag +
"_" + reason;
494 public static class UnsetFleetFlagsWithReasonAction
implements
496 protected String[] flags;
497 protected String reason;
499 public UnsetFleetFlagsWithReasonAction(String reason, String ... flags) {
500 this.reason = reason;
504 public void doAction(TriggerActionContext context) {
505 for (String flag : flags) {
507 flag, reason,
false, -1f);
513 public static class SetPersonMissionRefAction
implements TriggerAction {
514 protected String key;
516 public SetPersonMissionRefAction(String key) {
520 public void doAction(TriggerActionContext context) {
526 public static class SetFleetMissionRefAction
implements TriggerAction {
527 protected String key;
529 public SetFleetMissionRefAction(String key) {
533 public void doAction(TriggerActionContext context) {
539 public static class SetMemoryValueAction
implements TriggerAction {
540 protected String key;
541 protected Object value;
543 protected boolean removeOnMissionOver;
545 public SetMemoryValueAction(
MemoryAPI memory, String key, Object value,
boolean removeOnMissionOver) {
546 this.memory = memory;
549 this.removeOnMissionOver = removeOnMissionOver;
552 public void doAction(TriggerActionContext context) {
553 memory.
set(key, value);
555 bhm.
changes.add(
new VariableSet(memory, key, removeOnMissionOver));
559 public static class SetMemoryValueAfterDelay
implements TriggerAction,
EveryFrameScript {
560 protected String key;
561 protected Object value;
563 protected float delay;
565 public SetMemoryValueAfterDelay(
float delay,
MemoryAPI memory, String key, Object value) {
566 this.memory = memory;
572 public void doAction(TriggerActionContext context) {
574 memory.
set(key, value);
580 public boolean isDone() {
584 public boolean runWhilePaused() {
588 public void advance(
float amount) {
589 if (delay < 0)
return;
593 memory.
set(key, value);
598 public static class AddTagAfterDelay
implements TriggerAction,
EveryFrameScript {
599 protected String tag;
600 protected float delay;
603 public AddTagAfterDelay(
float delay,
StarSystemAPI system, String tag) {
605 this.system = system;
609 public void doAction(TriggerActionContext context) {
613 public boolean isDone() {
617 public boolean runWhilePaused() {
621 public void advance(
float amount) {
622 if (delay < 0)
return;
631 public static class RunScriptAfterDelay
implements TriggerAction,
EveryFrameScript {
632 protected float delay;
635 public RunScriptAfterDelay(
float delay,
Script script) {
636 this.script = script;
640 public void doAction(TriggerActionContext context) {
644 public boolean isDone() {
648 public boolean runWhilePaused() {
652 public void advance(
float amount) {
653 if (delay < 0)
return;
656 if (delay < 0 && script !=
null) {
663 public static class IncreaseMarketHostileTimeout
implements TriggerAction {
665 protected float days;
667 public IncreaseMarketHostileTimeout(
MarketAPI market,
float days) {
668 this.market = market;
672 public void doAction(TriggerActionContext context) {
677 public static class SetFleetMemoryValueAction
implements TriggerAction {
678 protected String key;
679 protected Object value;
681 public SetFleetMemoryValueAction(String key, Object value) {
686 public void doAction(TriggerActionContext context) {
691 public static class AddFleetDefeatTriggerAction
implements TriggerAction {
692 protected String trigger;
693 protected boolean permanent;
694 public AddFleetDefeatTriggerAction(String trigger,
boolean permanent) {
695 this.trigger = trigger;
696 this.permanent = permanent;
698 public void doAction(TriggerActionContext context) {
703 public static class MakeFleetFlagsPermanentAction
implements TriggerAction {
704 protected boolean permanent;
705 public MakeFleetFlagsPermanentAction(
boolean permanent) {
706 this.permanent = permanent;
708 public void doAction(TriggerActionContext context) {
709 context.makeAllFleetFlagsPermanent = permanent;
714 public static class AddTagsAction
implements TriggerAction {
715 protected String [] tags;
717 public AddTagsAction(String ... tags) {
721 public void doAction(TriggerActionContext context) {
722 for (String tag : tags) {
723 context.fleet.
addTag(tag);
728 public static class AddCommanderSkillAction
implements TriggerAction {
729 protected String skill;
732 public AddCommanderSkillAction(String skill,
int level) {
737 public void doAction(TriggerActionContext context) {
742 public static class SetFleetFlagAction
implements TriggerAction {
743 protected String flag;
744 protected Object[] stages;
745 protected boolean permanent;
747 public SetFleetFlagAction(String flag,
boolean permanent, Object ... stages) {
749 this.permanent = permanent;
750 this.stages = stages;
753 public void doAction(TriggerActionContext context) {
754 if (context.makeAllFleetFlagsPermanent) {
761 public static class SetEntityFlagAction
implements TriggerAction {
762 protected String flag;
763 protected Object[] stages;
764 protected boolean permanent;
766 public SetEntityFlagAction(String flag,
boolean permanent, Object ... stages) {
768 this.permanent = permanent;
769 this.stages = stages;
772 public void doAction(TriggerActionContext context) {
778 public static class UnsetFleetFlagsAction
implements TriggerAction {
779 protected String[] flags;
781 public UnsetFleetFlagsAction(String ... flags) {
785 public void doAction(TriggerActionContext context) {
786 for (String flag : flags) {
792 public static class UnsetEntityFlagsAction
implements TriggerAction {
793 protected String[] flags;
795 public UnsetEntityFlagsAction(String ... flags) {
799 public void doAction(TriggerActionContext context) {
800 for (String flag : flags) {
807 public static class SaveEntityReferenceAction
implements TriggerAction {
809 protected String key;
810 public SaveEntityReferenceAction(
MemoryAPI memory, String key) {
811 this.memory = memory;
815 public void doAction(TriggerActionContext context) {
816 memory.
set(key, context.entity);
821 public static class SaveFleetReferenceAction
implements TriggerAction {
823 protected String key;
824 public SaveFleetReferenceAction(
MemoryAPI memory, String key) {
825 this.memory = memory;
829 public void doAction(TriggerActionContext context) {
830 memory.
set(key, context.fleet);
835 public static class RemoveAbilitiesAction
implements TriggerAction {
836 protected String[] abilities;
838 public RemoveAbilitiesAction(String ... abilities) {
839 this.abilities = abilities;
842 public void doAction(TriggerActionContext context) {
843 for (String ability : abilities) {
850 public static class AddAbilitiesAction
implements TriggerAction {
851 protected String[] abilities;
853 public AddAbilitiesAction(String ... abilities) {
854 this.abilities = abilities;
857 public void doAction(TriggerActionContext context) {
858 for (String ability : abilities) {
864 public static class GenericAddTagsAction
implements TriggerAction {
865 protected String [] tags;
870 this.entity = entity;
873 public void doAction(TriggerActionContext context) {
874 for (String tag : tags) {
880 public static class GenericRemoveTagsAction
implements TriggerAction {
881 protected String [] tags;
886 this.entity = entity;
889 public void doAction(TriggerActionContext context) {
890 for (String tag : tags) {
896 public static class MakeNonStoryCriticalAction
implements TriggerAction {
899 public MakeNonStoryCriticalAction(
MemoryAPI ... memoryArray) {
900 this.memoryArray = memoryArray;
902 public void doAction(TriggerActionContext context) {
911 public static class SetInflaterAction
implements TriggerAction {
915 this.inflater = inflater;
918 public void doAction(TriggerActionContext context) {
924 public static class SetRemnantConfigAction
implements TriggerAction {
925 protected boolean dormant;
928 public SetRemnantConfigAction(
boolean dormant,
long seed) {
929 this.dormant = dormant;
933 public void doAction(TriggerActionContext context) {
934 Random random =
new Random(seed);
940 public static class AddCustomDropAction
implements TriggerAction {
943 public AddCustomDropAction(
CargoAPI cargo) {
947 public void doAction(TriggerActionContext context) {
953 public static class AddCommodityDropAction
implements TriggerAction {
954 protected int quantity;
955 protected String commodityId;
956 protected boolean dropQuantityBasedOnShipsDestroyed;
958 public AddCommodityDropAction(
int quantity, String commodityId,
boolean dropQuantityBasedOnShipsDestroyed) {
959 this.quantity = quantity;
960 this.commodityId = commodityId;
961 this.dropQuantityBasedOnShipsDestroyed = dropQuantityBasedOnShipsDestroyed;
964 public void doAction(TriggerActionContext context) {
965 if (dropQuantityBasedOnShipsDestroyed) {
975 public static class AddCommodityFractionDropAction
implements TriggerAction {
976 protected float fraction;
977 protected String commodityId;
978 protected boolean dropQuantityBasedOnShipsDestroyed;
980 public AddCommodityFractionDropAction(
float fraction, String commodityId) {
981 this.fraction = fraction;
982 this.commodityId = commodityId;
985 public void doAction(TriggerActionContext context) {
993 int quantity = (int) Math.round(fraction * capacity);
1001 public static class AddWeaponDropAction
implements TriggerAction {
1002 protected int quantity;
1003 protected String weaponId;
1005 public AddWeaponDropAction(
int quantity, String weaponId) {
1006 this.quantity = quantity;
1007 this.weaponId = weaponId;
1010 public void doAction(TriggerActionContext context) {
1018 public static class AddFighterLPCDropAction
implements TriggerAction {
1019 protected String wingId;
1020 protected int quantity;
1022 public AddFighterLPCDropAction(String wingId,
int quantity) {
1023 this.wingId = wingId;
1024 this.quantity = quantity;
1027 public void doAction(TriggerActionContext context) {
1035 public static class AddHullmodDropAction
implements TriggerAction {
1036 protected String hullmodId;
1038 public AddHullmodDropAction(String hullmodId) {
1039 this.hullmodId = hullmodId;
1042 public void doAction(TriggerActionContext context) {
1050 public static class AddSpecialItemDropAction
implements TriggerAction {
1051 protected String data;
1052 protected String itemId;
1054 public AddSpecialItemDropAction(String data, String itemId) {
1056 this.itemId = itemId;
1059 public void doAction(TriggerActionContext context) {
1067 public static class SpawnFleetAtPickedLocationAction
implements
1069 protected float range;
1071 public SpawnFleetAtPickedLocationAction(
float range) {
1075 public void doAction(TriggerActionContext context) {
1076 context.containingLocation.
addEntity(context.fleet);
1083 public static class PickSetLocationAction
implements TriggerAction {
1084 protected Vector2f coordinates;
1087 public PickSetLocationAction(Vector2f coordinates,
LocationAPI location) {
1088 this.coordinates = coordinates;
1089 this.location = location;
1092 public void doAction(TriggerActionContext context) {
1093 context.coordinates = coordinates;
1094 context.containingLocation = location;
1099 public static class PickLocationInHyperspaceAction
implements TriggerAction {
1102 public PickLocationInHyperspaceAction(
StarSystemAPI system) {
1103 this.system = system;
1106 public void doAction(TriggerActionContext context) {
1110 context.coordinates = pick;
1117 public static class PickLocationTowardsPlayerAction
implements TriggerAction {
1119 protected float arc;
1120 protected float minDist;
1121 protected float maxDist;
1122 protected float minDistFromPlayer;
1125 float arc,
float minDist,
float maxDist,
float minDistFromPlayer) {
1126 this.entity = entity;
1128 this.minDist = minDist;
1129 this.maxDist = maxDist;
1130 this.minDistFromPlayer = minDistFromPlayer;
1133 public void doAction(TriggerActionContext context) {
1134 if (entity ==
null) entity = context.entity;
1135 if (entity ==
null) entity = context.jumpPoint;
1146 context.coordinates = pick;
1151 public static class PickLocationTowardsEntityAction
implements TriggerAction {
1153 protected float arc;
1154 protected float minDist;
1155 protected float maxDist;
1156 protected float minDistFromPlayer;
1159 float arc,
float minDist,
float maxDist,
float minDistFromPlayer) {
1160 this.entity = entity;
1162 this.minDist = minDist;
1163 this.maxDist = maxDist;
1164 this.minDistFromPlayer = minDistFromPlayer;
1167 public void doAction(TriggerActionContext context) {
1168 if (entity ==
null) entity = context.entity;
1169 if (entity ==
null) entity = context.jumpPoint;
1180 context.coordinates = pick;
1187 public static class PickLocationAwayFromPlayerAction
implements
1189 protected float minDist;
1191 protected float maxDist;
1192 protected float arc;
1193 protected float minDistFromPlayer;
1195 public PickLocationAwayFromPlayerAction(
float minDist,
1197 float minDistFromPlayer) {
1198 this.minDist = minDist;
1199 this.entity = entity;
1200 this.maxDist = maxDist;
1202 this.minDistFromPlayer = minDistFromPlayer;
1205 public void doAction(TriggerActionContext context) {
1206 if (entity ==
null) entity = context.entity;
1207 if (entity ==
null) entity = context.jumpPoint;
1217 context.coordinates = pick;
1224 public static class PickLocationAroundPlayerAction
implements TriggerAction {
1225 protected float maxDist;
1226 protected float minDist;
1228 public PickLocationAroundPlayerAction(
float maxDist,
float minDist) {
1229 this.maxDist = maxDist;
1230 this.minDist = minDist;
1233 public void doAction(TriggerActionContext context) {
1237 context.coordinates = pick;
1243 public static class PickLocationAroundEntityAction
implements TriggerAction {
1244 protected float minDist;
1246 protected float maxDist;
1247 protected float minDistFromPlayer;
1249 public PickLocationAroundEntityAction(
float minDist,
1251 this.minDist = minDist;
1252 this.entity = entity;
1253 this.maxDist = maxDist;
1254 this.minDistFromPlayer = minDistFromPlayer;
1257 public void doAction(TriggerActionContext context) {
1258 if (entity ==
null) entity = context.entity;
1259 if (entity ==
null) entity = context.jumpPoint;
1262 context.coordinates = pick;
1268 public static class PickLocationWithinArcAction
implements TriggerAction {
1269 protected float arc;
1271 protected float maxDist;
1272 protected float minDist;
1273 protected float minDistFromPlayer;
1274 protected float dir;
1277 float maxDist,
float minDist,
float minDistFromPlayer,
float dir) {
1279 this.entity = entity;
1280 this.maxDist = maxDist;
1281 this.minDist = minDist;
1282 this.minDistFromPlayer = minDistFromPlayer;
1286 public void doAction(TriggerActionContext context) {
1287 if (entity ==
null) entity = context.entity;
1288 if (entity ==
null) entity = context.jumpPoint;
1292 context.coordinates = pick;
1298 public static class FleetSetPatrolActionText
implements TriggerAction {
1299 protected String text;
1300 public FleetSetPatrolActionText(String text) {
1304 public void doAction(TriggerActionContext context) {
1305 context.patrolText = text;
1309 public static class FleetSetTravelActionText
implements TriggerAction {
1310 protected String text;
1311 public FleetSetTravelActionText(String text) {
1315 public void doAction(TriggerActionContext context) {
1316 context.travelText = text;
1320 public static class OrderFleetPatrolSystemAction
implements TriggerAction {
1324 this.system = system;
1327 public void doAction(TriggerActionContext context) {
1334 public static class OrderFleetPatrolPointsAction
implements TriggerAction {
1335 protected List<SectorEntityToken> patrolPoints;
1336 protected boolean randomizeLocation;
1341 this.patrolPoints =
new ArrayList<SectorEntityToken>();
1343 this.patrolPoints.add(curr);
1345 this.randomizeLocation = randomizeLocation;
1346 this.system = system;
1349 public void doAction(TriggerActionContext context) {
1351 context.mission, system, randomizeLocation, context.fleet, patrolPoints.toArray(
new SectorEntityToken[0])));
1355 public static class OrderFleetPatrolSpawnedEntity
implements TriggerAction {
1356 protected boolean moveToNearEntity;
1358 public OrderFleetPatrolSpawnedEntity(
boolean moveToNearEntity) {
1359 this.moveToNearEntity = moveToNearEntity;
1362 public void doAction(TriggerActionContext context) {
1364 if (entity ==
null) entity = context.jumpPoint;
1365 if (entity ==
null) entity = context.token;
1366 if (entity ==
null) entity = context.planet;
1374 public static class OrderFleetPatrolTagsAction
implements TriggerAction {
1375 protected List<SectorEntityToken> added;
1377 protected boolean randomizeLocation;
1378 protected String[] tags;
1381 boolean randomizeLocation, String ... tags) {
1382 this.system = system;
1383 this.randomizeLocation = randomizeLocation;
1387 public void doAction(TriggerActionContext context) {
1388 List<SectorEntityToken> points =
new ArrayList<SectorEntityToken>();
1390 for (String tag : tags) {
1391 if (entity.hasTag(tag)) {
1397 if (added !=
null) points.addAll(added);
1403 public static class OrderFleetStopPursuingPlayerUnlessInStage
implements TriggerAction {
1404 protected List<Object> stages;
1407 this.mission = mission;
1408 this.stages = Arrays.asList(stages);
1411 public void doAction(TriggerActionContext context) {
1416 public static class OrderFleetInterceptNearbyPlayerInStage
implements TriggerAction {
1417 protected List<Object> stages;
1419 protected float maxRange;
1420 protected boolean repeatable;
1421 protected boolean mustBeStrongEnoughToFight;
1422 protected float repeatDelay;
1423 public OrderFleetInterceptNearbyPlayerInStage(
BaseHubMission mission,
1424 boolean mustBeStrongEnoughToFight,
1426 boolean repeatable,
float repeatDelay, Object...
stages) {
1427 this.mission = mission;
1428 this.mustBeStrongEnoughToFight = mustBeStrongEnoughToFight;
1429 this.maxRange = maxRange;
1430 this.repeatable = repeatable;
1431 this.repeatDelay = repeatDelay;
1432 this.stages = Arrays.asList(stages);
1435 public void doAction(TriggerActionContext context) {
1437 mustBeStrongEnoughToFight, maxRange, repeatable, repeatDelay, stages));
1442 public static class OrderFleetInterceptPlayerAction
implements TriggerAction {
1443 protected boolean makeHostile;
1444 public OrderFleetInterceptPlayerAction(
boolean makeHostile) {
1445 this.makeHostile = makeHostile;
1448 public void doAction(TriggerActionContext context) {
1456 public static class OrderFleetEBurn
implements TriggerAction {
1457 public OrderFleetEBurn() {
1460 public void doAction(TriggerActionContext context) {
1467 public static class FleetNoAutoDespawnAction
implements TriggerAction {
1468 public void doAction(TriggerActionContext context) {
1474 public static class PickLocationAtInSystemJumpPointAction
implements TriggerAction {
1476 protected float minDistFromPlayer;
1478 public PickLocationAtInSystemJumpPointAction(
StarSystemAPI system,
1479 float minDistFromPlayer) {
1480 this.system = system;
1481 this.minDistFromPlayer = minDistFromPlayer;
1484 public void doAction(TriggerActionContext context) {
1491 context.jumpPoint = pick;
1492 context.coordinates = loc;
1493 context.containingLocation = system;
1497 public static class PickLocationAtClosestToPlayerJumpPointAction
implements TriggerAction {
1499 protected float minDistFromPlayer;
1501 public PickLocationAtClosestToPlayerJumpPointAction(
StarSystemAPI system,
float minDistFromPlayer) {
1502 this.system = system;
1503 this.minDistFromPlayer = minDistFromPlayer;
1506 public void doAction(TriggerActionContext context) {
1510 float minDist = Float.MAX_VALUE;
1514 if (dist < minDist) {
1522 if (closest !=
null) {
1523 picker.
add(closest);
1529 context.jumpPoint = pick;
1530 context.coordinates = loc;
1531 context.containingLocation = system;
1541 public static class PickLocationAtClosestToEntityJumpPointAction
implements TriggerAction {
1543 protected float minDistFromEntity;
1547 this.system = system;
1548 this.entity = entity;
1549 this.minDistFromEntity = minDistFromEntity;
1552 public void doAction(TriggerActionContext context) {
1556 float minDist = Float.MAX_VALUE;
1560 if (dist < minDist) {
1568 if (closest !=
null) {
1569 picker.
add(closest);
1575 context.jumpPoint = pick;
1576 context.coordinates = loc;
1577 context.containingLocation = system;
1581 public static class CreateFleetAction
implements TriggerAction {
1585 public FleetSize fSize;
1586 public Float fSizeOverride;
1587 public Float combatFleetPointsOverride;
1588 public FleetQuality fQuality;
1589 public Float fQualityMod;
1590 public Integer fQualitySMods;
1591 public OfficerNum oNum;
1592 public OfficerQuality oQuality;
1593 public Boolean doNotIntegrateAICores;
1594 public String faction =
null;
1596 public Float freighterMult =
null;
1597 public Float tankerMult =
null;
1598 public Float linerMult =
null;
1599 public Float transportMult =
null;
1600 public Float utilityMult =
null;
1601 public Float qualityMod =
null;
1602 public Float qualityOverride =
null;
1604 public Float damage =
null;
1606 public Boolean allWeapons;
1607 public ShipPickMode shipPickMode;
1608 public Boolean removeInflater;
1610 public String nameOverride =
null;
1611 public Boolean noFactionInName =
null;
1613 public CreateFleetAction(String type, Vector2f locInHyper,
1614 FleetSize fSize, FleetQuality fQuality, String factionId) {
1616 params =
new FleetParamsV3(locInHyper, factionId,
null, type, 0f, 0f, 0f, 0f, 0f, 0f, 0f);
1617 params.ignoreMarketFleetSizeMult =
true;
1620 this.fQuality = fQuality;
1622 freighterMult = 0.1f;
1626 public void doAction(TriggerActionContext context) {
1628 Random random =
null;
1629 if (context.mission !=
null) {
1640 float min = fSize.maxFPFraction - (fSize.maxFPFraction - fSize.prev().maxFPFraction) / 2f;
1641 float max = fSize.maxFPFraction + (fSize.next().maxFPFraction - fSize.maxFPFraction) / 2f;
1642 float fraction = min + (max - min) * random.nextFloat();
1646 if (fSizeOverride !=
null) {
1647 fraction = fSizeOverride * (0.95f + random.nextFloat() * 0.1f);
1650 int numShipsDoctrine = 1;
1654 fraction *= 0.75f * doctrineMult;
1655 if (fraction > FleetSize.MAXIMUM.maxFPFraction) {
1656 excess = fraction - FleetSize.MAXIMUM.maxFPFraction;
1657 fraction = FleetSize.MAXIMUM.maxFPFraction;
1663 float combatPoints = fraction * maxPoints;
1664 if (combatFleetPointsOverride !=
null) {
1665 combatPoints = combatFleetPointsOverride;
1670 if (doctrine ==
null) {
1673 int added = (int)Math.round(excess / 0.1f);
1691 if (freighterMult ==
null) freighterMult = 0f;
1692 if (tankerMult ==
null) tankerMult = 0f;
1693 if (linerMult ==
null) linerMult = 0f;
1694 if (transportMult ==
null) transportMult = 0f;
1695 if (utilityMult ==
null) utilityMult = 0f;
1696 if (qualityMod ==
null) qualityMod = 0f;
1698 params.combatPts = combatPoints;
1699 params.freighterPts = combatPoints * freighterMult;
1700 params.tankerPts = combatPoints * tankerMult;
1701 params.transportPts = combatPoints * transportMult;
1702 params.linerPts = combatPoints * linerMult;
1703 params.utilityPts = combatPoints * utilityMult;
1704 params.qualityMod = qualityMod;
1719 params.doctrineOverride = doctrine;
1720 params.random = random;
1723 if (fQuality !=
null) {
1726 if (fQualityMod !=
null) {
1727 params.qualityMod += fQuality.qualityMod;
1729 params.qualityOverride = 0f;
1733 params.qualityMod += fQuality.qualityMod;
1736 params.qualityMod += fQuality.qualityMod;
1739 params.qualityMod += fQuality.qualityMod;
1742 if (fQualityMod !=
null) {
1743 params.qualityMod += fQuality.qualityMod;
1745 params.qualityMod += fQuality.qualityMod;
1750 params.qualityMod += fQuality.qualityMod;
1751 params.averageSMods = fQuality.numSMods;
1754 params.qualityMod += fQuality.qualityMod;
1755 params.averageSMods = fQuality.numSMods;
1758 params.qualityMod += fQuality.qualityMod;
1759 params.averageSMods = fQuality.numSMods;
1763 if (fQualityMod !=
null) {
1764 params.qualityMod += fQualityMod;
1766 if (fQualitySMods !=
null) {
1767 params.averageSMods = fQualitySMods;
1773 params.withOfficers =
false;
1776 params.officerNumberMult = 0f;
1779 params.officerNumberMult = 0.5f;
1784 params.officerNumberMult = 1.5f;
1792 if (oQuality !=
null) {
1795 params.officerLevelBonus = -3;
1805 params.officerLevelBonus = 2;
1808 case UNUSUALLY_HIGH:
1809 params.officerLevelBonus = 4;
1814 case AI_BETA_OR_GAMMA:
1818 params.aiCores = oQuality;
1821 if (doNotIntegrateAICores !=
null) {
1822 params.doNotIntegrateAICores = doNotIntegrateAICores;
1826 if (shipPickMode !=
null) {
1827 params.modeOverride = shipPickMode;
1831 if (qualityOverride !=
null) {
1832 params.qualityOverride = qualityOverride + params.
qualityMod;;
1835 context.fleet.
setFacing(random.nextFloat() * 360f);
1837 if (this.faction !=
null) {
1838 context.fleet.
setFaction(this.faction,
true);
1841 if (this.nameOverride !=
null) {
1842 context.fleet.
setName(this.nameOverride);
1844 if (this.noFactionInName !=
null && this.noFactionInName) {
1848 if (removeInflater !=
null && removeInflater) {
1855 if (allWeapons !=
null) {
1856 p.allWeapons = allWeapons;
1858 if (shipPickMode !=
null) {
1859 p.mode = shipPickMode;
1868 context.allFleets.add(context.fleet);
1874 if (damage !=
null) {
1892 if (action instanceof CreateFleetAction) {
1893 return (CreateFleetAction) action;
1960 cfa.fSizeOverride = min.maxFPFraction + (max.maxFPFraction - min.maxFPFraction) * f;
1967 cfa.fSizeOverride = fractionOfMax;
1971 cfa.combatFleetPointsOverride = combatFleetPointsOverride;
1976 cfa.fQualityMod = min.qualityMod + (max.qualityMod - min.qualityMod) * f;
1977 cfa.fQualitySMods = (int) Math.round(min.numSMods + (max.numSMods - min.numSMods) * f);
1978 if (cfa.fQualitySMods <= 0) {
1979 cfa.fQualitySMods =
null;
2009 FleetSize size = cfa.fSize;
2010 if (size ==
null) size = FleetSize.MEDIUM;
2012 float min = size.maxFPFraction - (size.maxFPFraction - size.prev().maxFPFraction) / 2f;
2013 float max = size.maxFPFraction + (size.next().maxFPFraction - size.maxFPFraction) / 2f;
2014 cfa.fSizeOverride = min + (max - min) *
genRandom.nextFloat();
2017 FleetQuality fq = cfa.fQuality;
2018 if (fq ==
null) fq = FleetQuality.DEFAULT;
2019 min = fq.qualityMod - (fq.qualityMod - fq.prev().qualityMod) / 2f;
2020 max = fq.qualityMod + (fq.next().qualityMod - fq.qualityMod) / 2f;
2021 cfa.fQualityMod = min + (max - min) *
genRandom.nextFloat();
2027 FleetSize size = cfa.fSize;
2028 if (size ==
null) size = FleetSize.MEDIUM;
2032 FleetQuality fq = cfa.fQuality;
2033 if (fq ==
null) fq = FleetQuality.DEFAULT;
2034 FleetQuality limit = FleetQuality.VERY_HIGH;
2035 FleetQuality next = fq;
2037 while (next.next().ordinal() <= limit.ordinal() && steps > 0) {
2041 limit = FleetQuality.LOWER;
2042 FleetQuality prev = fq;
2044 while (prev.prev().ordinal() >= limit.ordinal() && steps > 0) {
2051 OfficerNum oNum = cfa.oNum;
2052 if (oNum ==
null) oNum = OfficerNum.DEFAULT;
2053 if (oNum == OfficerNum.FEWER || oNum == OfficerNum.DEFAULT) {
2064 OfficerQuality oQuality = cfa.oQuality;
2065 if (oQuality ==
null) oQuality = OfficerQuality.DEFAULT;
2066 if (oQuality == OfficerQuality.LOWER || oQuality == OfficerQuality.DEFAULT) {
2080 FleetSize size = cfa.fSize;
2081 if (size ==
null) size = FleetSize.MEDIUM;
2085 FleetQuality fq = cfa.fQuality;
2086 if (fq ==
null) fq = FleetQuality.DEFAULT;
2087 FleetQuality limit = FleetQuality.VERY_HIGH;
2088 FleetQuality next = fq;
2090 while (next.next().ordinal() <= limit.ordinal() && steps > 0) {
2094 limit = FleetQuality.LOWER;
2095 FleetQuality prev = fq;
2097 while (prev.prev().ordinal() >= limit.ordinal() && steps > 0) {
2104 OfficerNum oNum = cfa.oNum;
2105 if (oNum ==
null) oNum = OfficerNum.DEFAULT;
2106 if (oNum == OfficerNum.FEWER || oNum == OfficerNum.DEFAULT) {
2117 OfficerQuality oQuality = cfa.oQuality;
2118 if (oQuality ==
null) oQuality = OfficerQuality.DEFAULT;
2119 if (oQuality == OfficerQuality.LOWER || oQuality == OfficerQuality.DEFAULT) {
2133 FleetSize size = cfa.fSize;
2134 if (size ==
null) size = FleetSize.MEDIUM;
2138 FleetQuality fq = cfa.fQuality;
2139 if (fq ==
null) fq = FleetQuality.DEFAULT;
2140 FleetQuality limit = FleetQuality.SMOD_1;
2141 FleetQuality next = fq;
2143 while (next.next().ordinal() <= limit.ordinal() && steps > 0) {
2147 limit = FleetQuality.LOWER;
2148 FleetQuality prev = fq;
2150 while (prev.prev().ordinal() >= limit.ordinal() && steps > 0) {
2157 OfficerNum oNum = cfa.oNum;
2158 if (oNum ==
null) oNum = OfficerNum.DEFAULT;
2159 if (oNum == OfficerNum.FEWER || oNum == OfficerNum.DEFAULT || oNum == OfficerNum.MORE) {
2173 OfficerQuality oQuality = cfa.oQuality;
2174 if (oQuality ==
null) oQuality = OfficerQuality.DEFAULT;
2175 if (oQuality == OfficerQuality.LOWER || oQuality == OfficerQuality.DEFAULT) {
2196 this.useQualityInsteadOfQualityFraction = temporarilyUseQualityInsteadOfQualityFraction;
2215 float range = base - minQuality;
2218 f = (
quality - minQuality) / range;
2224 float range = maxQuality - base;
2231 f = 0.5f + f * 0.5f;
2236 @SuppressWarnings(
"unchecked")
2238 return EnumSet.range(from, to).toArray();
2242 float num = enums.length;
2245 float rem = (float)(f - (
int) f);
2246 if (rem < 0.2f) rem = 0f;
2247 if (rem > 0.8f) rem = 1f;
2249 int index = (int) f;
2253 if (index > enums.length - 1) index = enums.length - 1;
2254 if (index < 0) index = 0;
2255 return enums[index];
2268 float transportMult,
float linerMult,
2269 float utilityMult) {
2271 if (freighterMult > 0) cfa.freighterMult = freighterMult;
2272 else cfa.freighterMult =
null;
2274 if (tankerMult > 0) cfa.tankerMult = tankerMult;
2275 else cfa.tankerMult =
null;
2277 if (transportMult > 0) cfa.transportMult = transportMult;
2278 else cfa.transportMult =
null;
2280 if (linerMult > 0) cfa.linerMult = linerMult;
2281 else cfa.linerMult =
null;
2283 if (utilityMult > 0) cfa.utilityMult = utilityMult;
2284 else cfa.utilityMult =
null;
2303 cfa.params.addShips =
new ArrayList<String>();
2305 for (String
id : variants) {
2328 if (officerQuality >= 0) {
2332 if (shipQuality >= 0) {
2336 if (numShips >= 0) {
2349 if (shipSize >= 0) {
2352 if (aggression >= 0) {
2372 cfa.params.fleetType = fleetType;
2373 cfa.fSizeOverride =
null;
2377 cfa.params.fleetType = fleetType;
2388 cfa.params.commander = commander;
2393 cfa.params.noCommanderSkills =
true;
2398 cfa.params.maxShipSize = max;
2402 cfa.params.minShipSize = min;
2406 cfa.params.maxNumShips = num;
2411 cfa.params.onlyRetainFlagship =
true;
2415 cfa.params.flagshipVariantId = variantId;
2420 cfa.params.flagshipVariant = variant;
2425 cfa.removeInflater =
true;
2430 cfa.shipPickMode = mode;
2435 cfa.allWeapons =
true;
2445 cfa.faction = factionId;
2450 cfa.nameOverride = name;
2454 cfa.noFactionInName =
true;
2458 cfa.doNotIntegrateAICores =
true;
2469 if (cfa !=
null && cfa.params !=
null) {
2470 cfa.params.commander = commander;
2473 public void doAction(TriggerActionContext context) {
2705 String flag = MemFlags.MEMORY_KEY_MAKE_NON_HOSTILE +
"_" + factionId;
2709 String flag = MemFlags.MEMORY_KEY_MAKE_HOSTILE +
"_" + factionId;
2807 triggerCustomAction(
new AddCommodityDropAction(quantity, commodityId, dropQuantityBasedOnShipsDestroyed));
2842 if (refKey !=
null) {
2854 if (refKey !=
null) {
2873 final float minDist,
final float maxDist) {
2877 final float minDist,
final float maxDist) {
2881 final float minDistFromPlayer,
final float minDist,
final float maxDist) {
2882 triggerCustomAction(
new PickLocationTowardsPlayerAction(
null, arc, minDist, maxDist, minDistFromPlayer));
2885 final float minDistFromPlayer,
final float minDist,
final float maxDist) {
2886 triggerCustomAction(
new PickLocationTowardsPlayerAction(entity, arc, minDist, maxDist, minDistFromPlayer));
2893 final float minDistFromPlayer,
final float minDist,
final float maxDist) {
2894 triggerCustomAction(
new PickLocationTowardsEntityAction(entity, arc, minDist, maxDist, minDistFromPlayer));
2902 final float minDist,
final float maxDist) {
2906 final float minDistFromPlayer,
final float minDist,
final float maxDist) {
2907 triggerCustomAction(
new PickLocationAwayFromPlayerAction(minDist,
null, maxDist, arc, minDistFromPlayer));
2913 final float minDist,
final float maxDist) {
2917 final float minDistFromPlayer,
final float minDist,
final float maxDist) {
2918 triggerCustomAction(
new PickLocationAwayFromPlayerAction(minDist, entity, maxDist, arc, minDistFromPlayer));
2939 triggerCustomAction(
new PickLocationAroundEntityAction(minDist, entity, maxDist, minDistFromPlayer));
2946 triggerCustomAction(
new PickLocationAtInSystemJumpPointAction(system, minDistFromPlayer));
2953 triggerCustomAction(
new PickLocationAtClosestToPlayerJumpPointAction(system, minDistFromPlayer));
2957 triggerCustomAction(
new PickLocationAtClosestToEntityJumpPointAction(system, entity, 0f));
2960 triggerCustomAction(
new PickLocationAtClosestToEntityJumpPointAction(system, entity, minDistFromEntity));
2964 final float minDistFromPlayer,
final float minDist,
final float maxDist) {
2968 final float minDistFromPlayer,
final float minDist,
final float maxDist) {
2969 triggerCustomAction(
new PickLocationWithinArcAction(arc, entity, maxDist, minDist, minDistFromPlayer, dir));
2997 triggerCustomAction(
new OrderFleetPatrolPointsAction(patrolPoints, randomizeLocation, system));
3005 if (action instanceof OrderFleetPatrolTagsAction) {
3006 OrderFleetPatrolTagsAction a = (OrderFleetPatrolTagsAction) action;
3007 if (a.added ==
null) a.added =
new ArrayList<SectorEntityToken>();
3015 if (action instanceof OrderFleetPatrolPointsAction) {
3016 OrderFleetPatrolPointsAction a = (OrderFleetPatrolPointsAction) action;
3019 a.patrolPoints.add(curr);
3052 if (allowLongPursuit) {
3061 if (
genRandom.nextFloat() < probabilityToEBurn) {
3079 boolean repeatable,
float repeatDelay, Object ...
stages) {
3081 new OrderFleetInterceptNearbyPlayerInStage(
this, mustBeStrongEnoughToFight, maxRange, repeatable, repeatDelay,
stages));
3095 final float minDistToPlayer,
final float minDist,
final float maxDist) {
3096 float angleIncr = 10f;
3097 float distIncr = (maxDist - minDist) / 5f;
3098 if (distIncr < 1000f) {
3099 distIncr = (maxDist - minDist) / 2f;
3101 if (distIncr < 1) distIncr = 1;
3105 for (
float currAngle = dir - arc / 2f; currAngle < dir + arc / 2f; currAngle += angleIncr) {
3106 for (
float dist = minDist; dist <= maxDist; dist += distIncr) {
3120 Vector2f pick =
null;
3127 float distToPlayer = Float.MAX_VALUE;
3130 if (distToPlayer < minDistToPlayer) {
3141 float distToPlayer = Float.MAX_VALUE;
3144 if (distToPlayer < minDistToPlayer) {
3147 away.scale(minDistToPlayer);
3148 Vector2f.add(playerFleet.
getLocation(), away, away);
3157 if (system ==
null)
return false;
3159 if (!planet.isStar())
continue;
3161 if (corona ==
null)
continue;
3163 float radius = corona.
getParams().middleRadius + corona.
getParams().bandWidthInEngine * 0.5f;
3164 if (dist < radius + 500f) {
3230 for (Object stage :
stages) {
3239 throw new RuntimeException(
"endTrigger() called without a corresponding beginTrigger()");
3245 if (
currTrigger !=
null)
throw new RuntimeException(
"Already began a trigger, call endTrigger() to finish it");
3309 for (String
id : markets) {
3311 if (market !=
null) {
3324 if (cfa !=
null && cfa.params !=
null && cfa.params.
commander !=
null) {
3345 OfficerNum oNum, OfficerQuality oQuality, String factionId, String fleetFactionId, String type, Vector2f locInHyper) {
3346 CreateFleetAction action =
new CreateFleetAction(type, locInHyper, size,
quality, factionId);
3348 action.oQuality = oQuality;
3349 action.faction = fleetFactionId;
3350 TriggerActionContext context =
new TriggerActionContext(
null);
3351 action.doAction(context);
3352 return context.fleet;
3375 Object stage, FleetSize size, String fleetType,
3376 float extraSuspicion) {
3380 Object stage, FleetSize size, String fleetType,
3381 float extraSuspicion) {
3383 if (factionId ==
null) factionId = market.
getFactionId();
3386 triggerCreateFleet(size, FleetQuality.DEFAULT, factionId, fleetType, entityToPatrol);
3400 if (market !=
null) {
3407 public static enum ComplicationSpawn {
3408 APPROACHING_OR_ENTERING,
3413 public static enum ComplicationRepImpact{
3421 picker.
add(ComplicationSpawn.APPROACHING_SYSTEM);
3422 picker.
add(ComplicationSpawn.ENTERING_SYSTEM);
3423 picker.
add(ComplicationSpawn.EXITING_SYSTEM);
3424 return picker.
pick();
3430 if (
genRandom.nextFloat() < 0.33f && cfa.fSize != FleetSize.TINY &&
getQuality() > 0.25f) {
3432 cfa.fSize = cfa.fSize.prev();
3433 if (cfa.fQuality ==
null) cfa.fQuality = FleetQuality.DEFAULT;
3434 cfa.fQuality = cfa.fQuality.next();
3436 if (cfa.oNum ==
null) cfa.oNum = OfficerNum.DEFAULT;
3437 cfa.oNum = cfa.oNum.next();
3438 }
else if (
genRandom.nextFloat() < 0.5f && cfa.fSize != FleetSize.MAXIMUM) {
3440 cfa.fSize = cfa.fSize.next();
3441 if (cfa.fQuality ==
null) cfa.fQuality = FleetQuality.DEFAULT;
3442 cfa.fQuality = cfa.fQuality.prev();
3447 @SuppressWarnings(
"rawtypes")
3451 String thingItOrThey,
3454 boolean aggressiveIfDeclined,
3455 ComplicationRepImpact repImpact,
3456 String failTrigger) {
3459 if (
"them".equals(thingItOrThey)) thingItOrThey =
"they";
3461 if (spawnType == ComplicationSpawn.APPROACHING_SYSTEM) {
3462 beginWithinHyperspaceRangeTrigger(system.getCenter(), 3f, true, stage);
3463 }
else if (spawnType == ComplicationSpawn.ENTERING_SYSTEM) {
3464 beginEnteredLocationTrigger(system, stage);
3465 }
else if (spawnType == ComplicationSpawn.EXITING_SYSTEM) {
3468 beginWithinHyperspaceRangeTrigger(system, 1f, true, stage);
3477 if (aggressiveIfDeclined) {
3482 if (repImpact == ComplicationRepImpact.LOW) {
3484 }
else if (repImpact == ComplicationRepImpact.NONE) {
3497 if (spawnType == ComplicationSpawn.APPROACHING_SYSTEM) {
3499 }
else if (spawnType == ComplicationSpawn.ENTERING_SYSTEM) {
3501 }
else if (spawnType == ComplicationSpawn.EXITING_SYSTEM) {
3518 String thingItOrThem =
"them";
3519 if (
"it".equals(thingItOrThey)) thingItOrThem =
"it";
3526 if (failTrigger ==
null) {
3527 failTrigger =
"FWTDefaultFailTrigger";
3537 if (randomizeAndAdjustFleetSize) {
3551 if (cfa.params.
fleetType !=
null && cfa.fSizeOverride !=
null &&
3555 if (cfa.fSizeOverride <= 0.2f) {
3557 }
else if (cfa.fSizeOverride < 0.7f) {
3562 }
else if (cfa.params.
fleetType !=
null && cfa.fSizeOverride !=
null &&
3566 if (cfa.fSizeOverride <= 0.2f) {
3568 }
else if (cfa.fSizeOverride < 0.7f) {
3584 if (cfa !=
null && cfa.params !=
null && cfa.params.
factionId !=
null) {
3594 if (navigationSkill) {
3600 if (allowLongPursuit) {
3614 for (
int i = 0; i < tugs; i++) {
3615 ShipPickParams params =
new ShipPickParams(ShipPickMode.ALL);
3632 if (preferred ==
null)
return;
3643 if (preferred ==
null)
return;
3645 for (String
id : preferred) {
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static SectorAPI getSector()
static void pruneFleet(int maxShips, int doctrineSize, CampaignFleetAPI fleet, float targetFP, Random random)
static float getDoctrineNumShipsMult(int doctrineNumShips)
static CampaignFleetAPI createFleet(FleetParamsV3 params)
static void applyDamageToFleet(CampaignFleetAPI fleet, float damage, boolean damageRemainingShips, Random random)
void updateQualityAndProducerFromSourceMarket()
void setSource(MarketAPI source, boolean updateQuality)
FactionDoctrineAPI doctrineOverride
static final String SENSOR_BURST
static final String GO_DARK
static final String EMERGENCY_BURN
static final String DECIVILIZED
static final String CUSTOM_SPAWNS_AS_INDEPENDENT
static final String INDEPENDENT
static final String CUSTOM_PIRATE_BEHAVIOR
static final String PATROL_SMALL
static final String SCAVENGER_MEDIUM
static final String PATROL_LARGE
static final String PATROL_MEDIUM
static final String SCAVENGER_LARGE
static final String SCAVENGER_SMALL
static final String MEMORY_KEY_EVERYONE_JOINS_BATTLE_AGAINST
static final String MEMORY_KEY_MAKE_HOSTILE_TO_PLAYER_TRADE_FLEETS
static final String MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF
static final String MEMORY_KEY_MAKE_ALWAYS_PURSUE
static final String HASSLE_TYPE
static final String MEMORY_KEY_NO_JUMP
static final String MEMORY_KEY_SOURCE_MARKET
static final String MEMORY_KEY_WAR_FLEET
static final String CAN_ONLY_BE_ENGAGED_WHEN_VISIBLE_TO_PLAYER
static final String MEMORY_KEY_MAKE_NON_HOSTILE
static final String FLEET_IGNORED_BY_OTHER_FLEETS
static final String MEMORY_KEY_PATROL_FLEET
static final String MEMORY_KEY_MAKE_HOSTILE
static final String MEMORY_KEY_FORCE_AUTOFIT_ON_NO_AUTOFIT_SHIPS
static final String MEMORY_KEY_SMUGGLER
static final String MEMORY_KEY_MAKE_ALLOW_DISENGAGE
static final String FLEET_PATROL_DISTANCE
static final String MEMORY_KEY_MAKE_AGGRESSIVE
static final String MEMORY_KEY_PIRATE
static final String PATROL_EXTRA_SUSPICION
static final String FLEET_DO_NOT_IGNORE_PLAYER
static final String MEMORY_KEY_ALLOW_LONG_PURSUIT
static final String MEMORY_KEY_DO_NOT_SHOW_FLEET_DESC
static final String MEMORY_KEY_AVOID_PLAYER_SLOWLY
static final String FLEET_IGNORES_OTHER_FLEETS
static final String WILL_HASSLE_PLAYER
static final String MEMORY_KEY_MAKE_HOSTILE_TO_ALL_TRADE_FLEETS
static final String MEMORY_KEY_LOW_REP_IMPACT
static final String MEMORY_KEY_NO_REP_IMPACT
static final String SPREAD_TOFF_HOSTILITY_IF_LOW_IMPACT
static final String FLEET_BUSY
static final String MEMORY_KEY_TRADE_FLEET
static final String MEMORY_KEY_PATROL_ALLOW_TOFF
static final String MEMORY_KEY_MAKE_AGGRESSIVE_ONE_BATTLE_ONLY
static final String NAVIGATION
void makeDiscoverable(SectorEntityToken entity, float range, float xp)
static float getUnits(float lightYears)
SectorEntityToken spawnDerelictHull(String hullId, LocData data)
SectorEntityToken spawnDebrisField(float radius, float density, LocData data)
List< MissionTrigger > triggers
SectorEntityToken spawnDerelict(String factionId, DerelictType type, LocData data)
SectorEntityToken spawnDerelictOfType(DerelictType type, LocData data)
List< Abortable > changes
SectorEntityToken spawnEntity(String entityId, LocData data)
void makeImportant(PersonAPI person, String flag, Enum ... stages)
void setFlagWithReason(SectorEntityToken entity, String flag, boolean permanent)
LinkedHashMap< Object, StageData > stages
StageData getData(Object id)
String getWithoutArticle(String item)
void addFleetDefeatTrigger(CampaignFleetAPI fleet, String trigger, boolean permanent)
void spawnShipGraveyard(String factionId, int minShips, int maxShips, LocData data)
void setFlag(SectorEntityToken entity, String flag, boolean permanent)
void triggerUnsetFleetFlagsWithReason(final String ... flags)
void triggerPickLocationFromEntityTowardsPlayer(final float arc, final float minDistFromPlayer, final float minDist, final float maxDist)
void triggerHideCommListing(PersonAPI person)
void triggerCreateMediumPatrolAroundMarket(MarketAPI market, Object stage, float extraSuspicion)
void triggerSetFleetComposition(float freighterMult, float tankerMult, float transportMult, float linerMult, float utilityMult)
void triggerCreatePatrolAroundMarket(MarketAPI market, SectorEntityToken entityToPatrol, Object stage, FleetSize size, String fleetType, float extraSuspicion)
void triggerAutoAdjustOfficerQuality(OfficerQuality min, OfficerQuality max)
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, Vector2f locInHyper)
void triggerSetFleetFlagsWithReason(final String ... flags)
void triggerSetFleetProbabilityCombatFreighters(float prob)
void triggerOrderExtraPatrolPoints(SectorEntityToken ... points)
void triggerPickLocationFromEntityAwayFromPlayer(final float arc, final float minDist, final float maxDist)
void triggerPickLocationTowardsPlayer(final SectorEntityToken entity, final float arc, final float dist)
void triggerSetMemoryValueAfterDelay(float delay, HasMemory hasMemory, String key, Object value)
void triggerAddHullmodDrop(final String hullmodId)
void autoAdjustFleetTypeName()
void triggerAddFighterLPCDrop(final String wingId, final int quantity)
void triggerFleetMakeFaster(boolean navigationSkill, int numTugs, boolean allowLongPursuit)
void triggerFleetSetFlagship(String variantId)
void triggerSetEntityToPickedJumpPoint()
void triggerAutoAdjustFleetStrengthExtreme()
void beginWithinHyperspaceRangeTrigger(StarSystemAPI system, float rangeLY, boolean requirePlayerInHyperspace, Object ... stages)
void triggerOrderFleetPatrol(final boolean randomizeLocation, final SectorEntityToken ... patrolPoints)
void triggerAutoAdjustFleetStrengthModerate()
void triggerMakeAlwaysSpreadTOffHostility()
void triggerMakeHostile()
void triggerFleetAllowLongPursuit()
void triggerSetWarFleet()
void triggerFleetPatherNoDefaultTithe()
void triggerMakeFleetGoAwayAfterDefeat()
void triggerSetFleetSizeAndQuality(FleetSize size, FleetQuality quality, String fleetType)
void triggerMakeFleetAllowDisengage()
void triggerMakeEveryoneJoinBattleAgainst()
void triggerIncreaseMarketHostileTimeout(MarketAPI market, float days)
void triggerFleetAddCommanderSkill(String skill, int level)
void triggerSetRemnantConfig()
void triggerAutoAdjustFleetStrengthMajor()
void triggerSetFleetMinShipSize(int min)
void triggerSetFleetCombatFleetPoints(float combatFleetPointsOverride)
void triggerFleetRemoveInflater()
void triggerAddTagAfterDelay(float delay, StarSystemAPI system, String tag)
void triggerSpawnDerelict(String factionId, DerelictType type, LocData data)
CreateFleetAction getPreviousCreateFleetAction()
void triggerCreateLargePatrol(MarketAPI from, String factionId, SectorEntityToken entityToPatrol, Object stage, float extraSuspicion)
void triggerAddCommodityFractionDrop(String commodityId, float fraction)
void triggerSetRemnantConfigDormant()
void triggerFleetAllowJump()
void setCurrTrigger(MissionTrigger currTrigger)
void triggerRandomizeFleetStrengthMinor()
void triggerFleetSetShipPickMode(ShipPickMode mode)
void triggerAddShips(String ...variants)
void triggerPickLocationAroundPlayer(final float dist)
void triggerMakeAllFleetFlagsPermanent()
void triggerSetFleetFlagPermanent(String flag)
void setUseQualityInsteadOfQualityFraction(boolean temporarilyUseQualityInsteadOfQualityFraction)
void triggerFleetSetAvoidPlayerSlowly()
void triggerPickLocationAroundEntity(final SectorEntityToken entity, final float minDistFromPlayer, final float minDist, final float maxDist)
void triggerCreateSmallPatrolAroundMarket(MarketAPI market, Object stage, float extraSuspicion)
void triggerMakeLowRepImpact()
static void addTugsToFleet(CampaignFleetAPI fleet, int tugs, Random random)
transient MissionTrigger currTrigger
void triggerMakeHostileWhileTransponderOff()
void triggerCreateMediumPatrol(MarketAPI from, String factionId, SectorEntityToken entityToPatrol, Object stage, float extraSuspicion)
void triggerFleetSetSingleShipOnly()
void triggerRemoveTags(SectorEntityToken entity, String ... tags)
void triggerPickLocationWithinArc(final SectorEntityToken entity, final float dir, final float arc, final float minDistFromPlayer, final float minDist, final float maxDist)
void triggerPickLocationAtClosestToPlayerJumpPoint(final StarSystemAPI system)
void triggerFleetMakeImportantPermanent(String flag)
void triggerSetFleetFlagPermanent(String flag, Object ... stages)
void triggerSetFleetDoctrineComp(int warships, int carriers, int phaseShips)
void triggerFleetOnlyEngageableWhenVisibleToPlayer()
void triggerFleetInterceptPlayerWithinRange(boolean mustBeStrongEnoughToFight, float maxRange, boolean repeatable, float repeatDelay, Object ... stages)
void triggerSpawnDebrisField(float radius, float density, LocData data)
void triggerEntityMakeImportant(String flag, Enum ... stages)
ComplicationSpawn pickComplicationSpawnType()
void triggerSetEntityFlag(String flag, Object ... stages)
void triggerPickLocationFromEntityTowardsPlayer(final float arc, final float dist)
void triggerSetTraderFleet()
void triggerSetFleetGenericHailIfNonHostilePermanent(String commsTrigger)
void triggerUnhideCommListing(PersonAPI person)
void triggerPickLocationAroundEntity(final SectorEntityToken entity, final float minDist, final float maxDist)
void triggerSetInflater(final FleetInflater inflater)
void triggerOrderFleetInterceptPlayer(boolean makeHostile, boolean allowLongPursuit)
void triggerSetFleetSizeFraction(float fractionOfMax)
void triggerOrderFleetPatrol(final StarSystemAPI system)
void triggerFleetUnsetAllowLongPursuit()
void triggerSetFleetCompositionNoSupportShips()
void triggerMakeHostileAndAggressive()
void triggerAutoAdjustOfficerNum(OfficerNum min, OfficerNum max)
void triggerUndoMakeAllFleetFlagsPermanent()
void triggerMakeNonStoryCritical(MemoryAPI ... memoryArray)
void triggerMakeNonHostile()
void triggerMakeFleetIgnoreOtherFleets()
void triggerRunScriptAfterDelay(float delay, Script script)
void triggerSetFleetType(String fleetType)
float getQualityFraction()
void beginWithinHyperspaceRangeTrigger(SectorEntityToken entity, float rangeLY, boolean requirePlayerInHyperspace, Object ... stages)
void triggerMakeNoRepImpact()
void setFleetDamageTaken(float damage)
void triggerSaveGlobalFleetRef(String key)
void triggerFleetAddTugsFlag(int tugs)
void triggerSetMemoryValue(HasMemory withMemory, String key, Object value)
void triggerSetGlobalMemoryValue(final String key, final Object value)
void triggerMakeFleetIgnoredByOtherFleets()
void triggerOrderFleetPatrolEntity(boolean moveToNearEntity)
void triggerSetFleetAlwaysPursue()
void triggerUnsetAvoidPlayerSlowly()
void triggerSetFleetOfficers(OfficerNum num, OfficerQuality quality)
void triggerMakeNonStoryCritical(String ... markets)
static Vector2f pickLocationWithinArc(Random random, final SectorEntityToken entity, final float dir, final float arc, final float minDistToPlayer, final float minDist, final float maxDist)
void triggerPickLocationAtClosestToEntityJumpPoint(StarSystemAPI system, SectorEntityToken entity, float minDistFromEntity)
void triggerPatrolAllowTransponderOff()
void triggerSetFleetGenericHailPermanent(String commsTrigger)
static CampaignFleetAPI createFleet(FleetSize size, FleetQuality quality, OfficerNum oNum, OfficerQuality oQuality, String factionId, String fleetFactionId, String type, Vector2f locInHyper)
void triggerSetStandardHostileNonPirateFlags()
void triggerOrderFleetInterceptPlayer()
void triggerComplicationBegin(Object stage, ComplicationSpawn spawnType, StarSystemAPI system, String factionId, String thing, String thingItOrThey, String thingDesc, int paymentOffered, boolean aggressiveIfDeclined, ComplicationRepImpact repImpact, String failTrigger)
void triggerMakeHostileToAllTradeFleets()
void triggerPickLocationFromEntityAwayFromPlayer(final float arc, final float dist)
SectorEntityToken getEntityFromGlobal(String key)
void beginInCommRelayRangeTrigger(Object ... stages)
void triggerSetFleetQuality(FleetQuality quality)
void triggerFleetForceAutofitOnAllShips()
void triggerSpawnEntity(final String entityId, LocData data)
void triggerPickLocationAwayFromPlayer(final SectorEntityToken entity, final float arc, final float minDist, final float maxDist)
void triggerOrderFleetPatrol(final StarSystemAPI system, final boolean randomizeLocation, final SectorEntityToken ... patrolPoints)
void triggerSetRemnantConfig(boolean dormant)
void triggerFleetSetAllWeapons()
void triggerPickLocationTowardsPlayer(final SectorEntityToken entity, final float arc, final float minDistFromPlayer, final float minDist, final float maxDist)
void triggerMakeFleetIgnoreOtherFleetsExceptPlayer()
void beginStageTrigger(Object ... stages)
void triggerAddAbilities(final String ... abilities)
void beginWithinHyperspaceRangeTrigger(MarketAPI market, float rangeLY, boolean requirePlayerInHyperspace, Object ... stages)
void triggerUnsetFleetAlwaysPursue()
void triggerSetFleetNotBusy()
void triggerSpawnFleetAtPickedLocation(final String flag, final String refKey)
void triggerFleetSetPatrolLeashRange(float dist)
void triggerMovePersonToMarket(PersonAPI person, MarketAPI market, boolean alwaysAddToComms)
void triggerSetMemoryValueAfterDelay(float delay, MemoryAPI memory, String key, Object value)
void triggerFleetStopPursuingPlayerUnlessInStage(Object ... stages)
void triggerOrderFleetPatrol(final StarSystemAPI system, final boolean randomizeLocation, final String ... tags)
void triggerSetFleetGenericHailIfNonHostile(String commsTrigger, Object ...stages)
void triggerAddWeaponDrop(final String weaponId, final int quantity)
void beginGlobalFlagTrigger(String flag, Object ... stages)
void triggerAutoAdjustFleetSize(FleetSize min, FleetSize max)
void triggerPickSetLocation(final LocationAPI location, final Vector2f coordinates)
void triggerRemoveAbilities(final String ... abilities)
void triggerCreateLargePatrolAroundMarket(MarketAPI market, Object stage, float extraSuspicion)
void triggerPickLocationTowardsEntity(final SectorEntityToken entity, final float arc, final float minDistFromPlayer, final float minDist, final float maxDist)
void triggerPickLocationAwayFromPlayer(final SectorEntityToken entity, final float arc, final float dist)
void triggerFleetSetTravelActionText(String travelText)
FleetParamsV3 triggerGetFleetParams()
void triggerFleetInterceptPlayerOnSight(boolean mustBeStrongEnoughToFight, Object ... stages)
void triggerSaveEntityRef(MemoryAPI memory, String key)
void triggerSetFleetSize(FleetSize size)
void triggerFleetAddDefeatTrigger(String trigger)
void triggerMakeHostileToFaction(String factionId)
void setFleetSource(MarketAPI... preferred)
void triggerPickLocationFromEntityTowardsPlayer(final float arc, final float minDist, final float maxDist)
void triggerUnsetFleetFlag(String flag)
void triggerFleetAddDefeatTriggerPermanent(String trigger)
float genDelay(float base)
void triggerSetSmugglerFleet()
void triggerMakeFleetNotIgnorePlayer()
void triggerMakeHostileToPlayerTradeFleets()
void triggerFleetNoJump()
void makeHostileAndAggressive(CampaignFleetAPI fleet, boolean permanent)
void triggerSetFleetFlagsWithReasonPermanent(final String ... flags)
void triggerCustomAction(TriggerAction action)
void triggerSpawnFleetNear(final SectorEntityToken entity, final String flag, final String refKey)
void triggerFleetDoNotIntegrateAICores()
void triggerFleetSetNoFactionInName()
void triggerPickLocationAwayFromPlayer(final SectorEntityToken entity, final float arc, final float minDistFromPlayer, final float minDist, final float maxDist)
void triggerSpawnShipGraveyard(String factionId, int minShips, int maxShips, LocData data)
void triggerSetFleetFlag(String flag, Object ... stages)
Object[] getEnums(Enum from, Enum to)
void triggerAutoAdjustFleetQuality(FleetQuality min, FleetQuality max)
void triggerFleetSetFlagship(ShipVariantAPI variant)
void triggerFleetMakeImportant(String flag, Enum ... stages)
void triggerDoNotShowFleetDesc()
void triggerOrderFleetAttackLocation(final SectorEntityToken entity)
void triggerPickLocationAtClosestToEntityJumpPoint(StarSystemAPI system, SectorEntityToken entity)
void triggerPickLocationTowardsEntity(SectorEntityToken entity, float arc, float dist)
void triggerSetFleetDoctrineQuality(int officerQuality, int shipQuality, int numShips)
void triggerOrderFleetPatrolHyper(final StarSystemAPI system)
void triggerSetPersonMissionRef(final String key)
void triggerPickLocationFromEntityAwayFromPlayer(final float arc, final float minDistFromPlayer, final float minDist, final float maxDist)
Object pickEnum(float f, Object ... enums)
void triggerUnsetEntityFlag(String flag)
void triggerSetStandardHostilePirateFlags()
void triggerComplicationEnd(boolean randomizeAndAdjustFleetSize)
void triggerPickLocationInHyperspace(final StarSystemAPI system)
void triggerSetFleetDoctrineOther(int shipSize, int aggression)
void triggerPickLocationAroundEntity(final SectorEntityToken entity, final float dist)
void triggerDespawnEntity(SectorEntityToken entity)
void triggerSetRemnantConfigActive()
void triggerSetFleetCommander(final PersonAPI commander)
void triggerFleetSetName(String name)
void checkExistingTrigger()
void beginCustomTrigger(ConditionChecker condition, Object ... stages)
void triggerPickLocationAtInSystemJumpPoint(final StarSystemAPI system)
void triggerSetFleetExtraSmugglingSuspicion(float extraSuspicion)
void triggerMakeNonStoryCritical(MarketAPI ... markets)
void triggerSetEntityFlagPermanent(String flag)
void beginDaysElapsedTrigger(float days, Object ... stages)
void triggerPickLocationAtClosestToPlayerJumpPoint(final StarSystemAPI system, final float minDistFromPlayer)
void triggerAddTags(SectorEntityToken entity, String ... tags)
void triggerSpawnFleetAtPickedLocation()
void triggerOrderFleetEBurn(float probabilityToEBurn)
void triggerSpawnFleetAtPickedLocation(final float range, final String flag, final String refKey)
void triggerOrderFleetMaybeEBurn()
void triggerAddCustomDrop(final CargoAPI cargo)
void triggerPickLocationTowardsPlayer(final SectorEntityToken entity, final float arc, final float minDist, final float maxDist)
void triggerSaveGlobalEntityRef(String key)
void triggerCreatePatrolAroundMarket(MarketAPI market, String factionId, SectorEntityToken entityToPatrol, Object stage, FleetSize size, String fleetType, float extraSuspicion)
void triggerMakeNonHostileToFaction(String factionId)
void triggerSetEntityFlag(String flag)
void triggerSetFleetMaxShipSize(int max)
void triggerOrderFleetPatrol(final SectorEntityToken ... patrolPoints)
void triggerFleetAddTags(String ... tags)
void triggerSetStandardAggroPirateFlags()
void triggerSetFleetFlag(String flag)
void triggerSetFleetGenericHail(String commsTrigger, Object ...stages)
void triggerSetFleetMaxNumShips(int num)
void triggerSetFleetMissionRef(final String key)
static boolean isNearCorona(StarSystemAPI system, Vector2f loc)
void triggerCreateSmallPatrol(MarketAPI from, String factionId, SectorEntityToken entityToPatrol, Object stage, float extraSuspicion)
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, SectorEntityToken roughlyWhere)
void beginInRangeOfEntityTrigger(SectorEntityToken entity, float range, Object ... stages)
void beginEnteredLocationTrigger(LocationAPI location, Object ... stages)
transient boolean useQualityInsteadOfQualityFraction
void triggerSetGlobalMemoryValuePermanent(final String key, final Object value)
void triggerSetFleetHasslePlayer(String hassleType)
void triggerFleetNoAutoDespawn()
void triggerSetPirateFleet()
void triggerSetFleetDoctrineRandomize(float randomizeProb)
void triggerPickLocationAroundPlayer(final float minDist, final float maxDist)
void triggerPickLocationAtInSystemJumpPoint(final StarSystemAPI system, final float minDistFromPlayer)
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, StarSystemAPI roughlyWhere)
void triggerSetFleetNoCommanderSkills()
void triggerAddSpecialItemDrop(final String itemId, final String data)
void triggerSetStandardAggroNonPirateFlags()
void triggerMakeMissionNodeDiscoverable()
void triggerFleetInterceptPlayerNearby(boolean mustBeStrongEnoughToFight, Object ... stages)
void triggerSetFleetMemoryValue(final String key, final Object value)
void triggerSetFleetFaction(final String factionId)
void triggerAddCommodityDrop(String commodityId, int quantity, boolean dropQuantityBasedOnShipsDestroyed)
void setFleetSource(String ... preferred)
void triggerFleetSetPatrolActionText(String patrolText)
void triggerFleetSetCommander(PersonAPI commander)
MissionTrigger getCurrTrigger()
void triggerFleetPatherAllowTithe()
void triggerPickLocationAroundEntity(final float dist)
void triggerFleetSetWarnAttack(String warnCommsTrigger, String attackCommsTrigger, Object ... stages)
void triggerSpawnFleetNear(final SectorEntityToken entity, final float range, final String flag, final String refKey)
void triggerSetGlobalMemoryValueAfterDelay(float delay, String key, Object value)
void triggerSpawnDerelict(DerelictShipData shipData, LocData data)
void triggerRandomizeFleetProperties()
void triggerSetEntityFlagPermanent(String flag, Object ... stages)
void beginDaysElapsedTrigger(float days, Object stage, Object ... stages)
void triggerSpawnDerelictHull(String hullId, LocData data)
void triggerMakeDiscoverable(float range, float xp)
void triggerSaveFleetRef(MemoryAPI memory, String key)
void triggerSetMemoryValuePermanent(HasMemory withMemory, String key, Object value)
void triggerSpawnDerelict(DerelictType type, LocData data)
static float DEFAULT_MIN_DIST_FROM_PLAYER
void triggerPickLocationWithinArc(final float dir, final float arc, final float minDistFromPlayer, final float minDist, final float maxDist)
List< TriggerAction > getActions()
LinkedHashSet< Object > getStages()
void setCondition(ConditionChecker condition)
static float getNormalRandom(float min, float max)
static void initRemnantFleetProperties(Random random, CampaignFleetAPI fleet, boolean dormant)
static int EXCEPTIONAL_PODS_OFFICER_LEVEL
static void addExtraSalvage(SectorEntityToken entity, CargoAPI cargo)
static void makeFleetInterceptPlayer(CampaignFleetAPI fleet, boolean makeAggressive, boolean makeLowRepImpact, float interceptDays)
static final float MAX_LEVEL_BONUS
static String getWithDGS(float num)
static Vector2f getUnitVectorAtDegreeAngle(float degrees)
static String ucFirst(String str)
static void moveToMarket(PersonAPI person, MarketAPI destination, boolean alwaysAddToCommDirectory)
static void makeImportant(SectorEntityToken entity, String reason)
static void increaseMarketHostileTimeout(MarketAPI market, float days)
static void fadeAndExpire(SectorEntityToken entity)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static long genRandomSeed()
static void makeNonStoryCritical(MarketAPI market, String reason)
static boolean setFlagWithReason(MemoryAPI memory, String flagKey, String reason, boolean value, float expire)
static Vector2f getPointWithinRadius(Vector2f from, float r)
static StarCoronaTerrainPlugin getCoronaFor(PlanetAPI star)
static float getAngleInDegrees(Vector2f v)
void addAll(Collection< T > items)
CargoAPI createCargo(boolean unlimitedStacks)
CommoditySpecAPI getCommoditySpec(String commodityId)
float convertToDays(float realSeconds)
LocationAPI getContainingLocation()
void setName(String name)
void setFaction(String factionId, boolean includeCaptains)
void setCommander(PersonAPI commander)
FleetDataAPI getFleetData()
void setInflater(FleetInflater inflater)
FleetInflater getInflater()
void setNoFactionInName(boolean noFactionInName)
void setLocation(float x, float y)
MutableCharacterStatsAPI getCommanderStats()
void addHullmods(String id, int count)
void addWeapons(String id, int count)
void addSpecial(SpecialItemData data, float quantity)
void addCommodity(String commodityId, float quantity)
void addFighters(String id, int count)
CommDirectoryEntryAPI getEntryForPerson(PersonAPI person)
String addPerson(PersonAPI person)
void setHidden(boolean hidden)
List< ShipRolePick > pickShip(String role, ShipPickParams params)
float getApproximateMaxFPPerFleet(ShipPickMode mode)
boolean getCustomBoolean(String key)
FactionDoctrineAPI getDoctrine()
void setOfficerQuality(int officerQuality)
void setCarriers(int carriers)
void setShipQuality(int shipQuality)
void setPhaseShips(int phaseShips)
void setWarships(int warships)
void setAutofitRandomizeProbability(float autofitRandomizeProbability)
void setNumShips(int numShips)
void setAggression(int aggression)
void setShipSize(int shipSize)
FactionDoctrineAPI clone()
void setCombatFreighterProbability(float combatFreighterProbability)
void addFleetMember(FleetMemberAPI member)
List< SectorEntityToken > getAllEntities()
List< SectorEntityToken > getJumpPoints()
List< PlanetAPI > getPlanets()
void addEntity(SectorEntityToken entity)
boolean isCurrentLocation()
CampaignFleetAPI getPlayerFleet()
void addScript(EveryFrameScript script)
CampaignClockAPI getClock()
FactionAPI getFaction(String factionId)
MemoryAPI getMemoryWithoutUpdate()
LocationAPI getHyperspace()
boolean hasScriptOfClass(Class c)
LocationAPI getContainingLocation()
void removeScriptsOfClass(Class c)
void removeAbility(String id)
void addScript(EveryFrameScript script)
void setFacing(float facing)
StarSystemAPI getStarSystem()
Vector2f getLocationInHyperspace()
MemoryAPI getMemoryWithoutUpdate()
AbilityPlugin getAbility(String id)
void removeTag(String tag)
void addAbility(String id)
SectorEntityToken getHyperspaceAnchor()
SectorEntityToken getCenter()
MarketAPI getMarket(String id)
CommDirectoryAPI getCommDirectory()
boolean hasCondition(String id)
SectorEntityToken getPrimaryEntity()
MemoryAPI getMemoryWithoutUpdate()
SectorEntityToken getEntity(String key)
void set(String key, Object value)
void setSkillLevel(String id, float level)
MutableCharacterStatsAPI getStats()
MemoryAPI getMemoryWithoutUpdate()
RepairTrackerAPI getRepairTracker()