Starsector API
Loading...
Searching...
No Matches
SlipstreamMercenaryEPEC.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.enc;
2
3import java.util.Random;
4
5import org.lwjgl.util.vector.Vector2f;
6
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.FleetAssignment;
9import com.fs.starfarer.api.campaign.SectorEntityToken;
10import com.fs.starfarer.api.campaign.StarSystemAPI;
11import com.fs.starfarer.api.impl.campaign.ids.Factions;
12import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathBaseIntel;
13import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseIntel;
14import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
15import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
16import com.fs.starfarer.api.util.Misc;
17
19
20 @Override
21 public void createEncounter(EncounterManager manager, EncounterPoint point) {
22 Random random = manager.getRandom();
23
24 float f = getProximityFactor(point.getLocInHyper());
25
26 int difficulty = 0;
27 difficulty += (int) Math.round(f * 5f);
28 difficulty += random.nextInt(6);
29
31 m.beginFleet();
32
33 Vector2f loc = point.getLocInHyper();
34 m.createQualityFleet(difficulty, Factions.MERCENARY, loc);
39
40 CampaignFleetAPI fleet = m.createFleet();
41 if (fleet != null) {
42 point.where.addEntity(fleet);
43 fleet.setLocation(point.loc.x, point.loc.y);
44 Vector2f spawnLoc = Misc.getPointWithinRadius(point.loc, 1000f);
45 SectorEntityToken e = point.where.createToken(spawnLoc);
46 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, e, 30f * random.nextFloat(), "laying in wait");
48 fleet.addScript(new MissionFleetAutoDespawn(null, fleet));
49 }
50 }
51
53 if (!EncounterManager.EP_TYPE_SLIPSTREAM.equals(point.type)) return 0f;
54
55 float f = getProximityFactor(point.getLocInHyper());
56 if (f > 0) {
57 f = 0.25f + 0.75f * f;
58 }
59 return 10f * f;
60 }
61
62 public static float getProximityFactor(Vector2f locInHyper) {
64 float f1 = getLuddicPathBaseProximityFactor(intel, locInHyper);
65
66 PirateBaseIntel intel2 = getClosestPirateBase(locInHyper);
67 float f2 = getPirateBaseProximityFactor(intel2, locInHyper);
68
69 float result = Math.max(f1, f2);
70
71 StarSystemAPI ruins = getClosestSystemWithRuins(locInHyper);
72 float f3 = getRuinsProximityFactor(ruins, locInHyper);
73 f3 *= 0.25f;
74 result = Math.max(result, f3);
75
76 return result;
77 }
78
79}
80
81
82
83
84
static float getRuinsProximityFactor(StarSystemAPI system, Vector2f locInHyper)
static float getLuddicPathBaseProximityFactor(LuddicPathBaseIntel base, Vector2f locInHyper)
static PirateBaseIntel getClosestPirateBase(Vector2f locInHyper)
static float getPirateBaseProximityFactor(PirateBaseIntel base, Vector2f locInHyper)
static LuddicPathBaseIntel getClosestLuddicPathBase(Vector2f locInHyper)
float getFrequencyForPoint(EncounterManager manager, EncounterPoint point)
void createEncounter(EncounterManager manager, EncounterPoint point)
void createQualityFleet(int difficulty, String factionId, Vector2f locInHyper)
static Vector2f getPointWithinRadius(Vector2f from, float r)
Definition Misc.java:711
void addAssignment(FleetAssignment assignment, SectorEntityToken target, float maxDurationInDays)
void addEntity(SectorEntityToken entity)
SectorEntityToken createToken(float x, float y)
void addScript(EveryFrameScript script)