Starsector API
Loading...
Searching...
No Matches
SlipstreamLuddicPathEPEC.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.impl.campaign.ids.Factions;
11import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
12import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathBaseIntel;
13import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
14import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
15import com.fs.starfarer.api.util.Misc;
16
18
19 @Override
20 public void createEncounter(EncounterManager manager, EncounterPoint point) {
21 Random random = manager.getRandom();
22
24 float f = getProximityFactor(point.getLocInHyper());
25
26 int difficulty = 0;
27 difficulty += (int) Math.round(f * 3f);
28 if (intel != null) {
29 if (intel.isLarge()) {
30 difficulty += 4;
31 } else {
32 difficulty += 2;
33 }
34 }
35 difficulty += random.nextInt(4);
36
38 m.beginFleet();
39
40 Vector2f loc = point.getLocInHyper();
41 m.createStandardFleet(difficulty, Factions.LUDDIC_PATH, loc);
45 if (intel != null && intel.getMarket() != null) {
47 }
48
49 CampaignFleetAPI fleet = m.createFleet();
50 if (fleet != null) {
51 point.where.addEntity(fleet);
52 fleet.setLocation(point.loc.x, point.loc.y);
53 Vector2f spawnLoc = Misc.getPointWithinRadius(point.loc, 1000f);
54 SectorEntityToken e = point.where.createToken(spawnLoc);
55 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, e, 30f * random.nextFloat(), "laying in wait");
57 fleet.addScript(new MissionFleetAutoDespawn(null, fleet));
58 }
59 }
60
62 if (!EncounterManager.EP_TYPE_SLIPSTREAM.equals(point.type)) return 0f;
63
65 float f = getProximityFactor(point.getLocInHyper());
66
67 if (intel != null && f > 0) {
68 f = 0.25f + 0.75f * f;
69 if (intel.isLarge()) {
70 f *= 5f;
71 } else {
72 f *= 3f;
73 }
74 }
75 return 10f * f;
76 }
77
78 public static float getProximityFactor(Vector2f locInHyper) {
80 float f = getLuddicPathBaseProximityFactor(intel, locInHyper);
81
82 return f;
83 }
84}
85
86
87
88
89
static float getLuddicPathBaseProximityFactor(LuddicPathBaseIntel base, Vector2f locInHyper)
static LuddicPathBaseIntel getClosestLuddicPathBase(Vector2f locInHyper)
float getFrequencyForPoint(EncounterManager manager, EncounterPoint point)
void createEncounter(EncounterManager manager, EncounterPoint point)
void createStandardFleet(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)