Starsector API
Loading...
Searching...
No Matches
SlipstreamScavengerEPEC.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.FleetTypes;
12import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
13import com.fs.starfarer.api.impl.campaign.procgen.themes.RuinsFleetRouteManager;
14import com.fs.starfarer.api.impl.campaign.procgen.themes.ScavengerPiracyScript;
15import com.fs.starfarer.api.util.Misc;
16import com.fs.starfarer.api.util.WeightedRandomPicker;
17
19
20 @Override
21 public void createEncounter(EncounterManager manager, EncounterPoint point) {
22 Random random = manager.getRandom();
23 boolean pirate = random.nextBoolean();
24 pirate = true; // seems like legit scavengers wouldn't spend too much time waiting in ambush
25
27 picker.add(FleetTypes.SCAVENGER_SMALL, 5f);
28 picker.add(FleetTypes.SCAVENGER_MEDIUM, 15f);
29 picker.add(FleetTypes.SCAVENGER_LARGE, 10f);
30 String type = picker.pick();
31
33 null, null, pirate, random);
34
35 if (fleet != null) {
36 point.where.addEntity(fleet);
37 fleet.setLocation(point.loc.x, point.loc.y);
38 Vector2f spawnLoc = Misc.getPointWithinRadius(point.loc, 1000f);
39 SectorEntityToken e = point.where.createToken(spawnLoc);
40 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, e, 30f * random.nextFloat(), "waiting");
42 fleet.addScript(new MissionFleetAutoDespawn(null, fleet));
43 fleet.addScript(new ScavengerPiracyScript(fleet));
44 }
45 }
46
48 if (!EncounterManager.EP_TYPE_SLIPSTREAM.equals(point.type)) return 0f;
49
50 float f = getProximityFactor(point.getLocInHyper());
51 if (f > 0) {
52 f = 0.25f + 0.75f * f;
53 }
54 return 10f * f;
55 }
56
57
58 public static float getProximityFactor(Vector2f locInHyper) {
59 StarSystemAPI ruins = getClosestSystemWithRuins(locInHyper);
60 float f = getRuinsProximityFactor(ruins, locInHyper);
61 return f;
62 }
63
64
65}
66
67
68
69
70
static float getRuinsProximityFactor(StarSystemAPI system, Vector2f locInHyper)
float getFrequencyForPoint(EncounterManager manager, EncounterPoint point)
void createEncounter(EncounterManager manager, EncounterPoint point)
static CampaignFleetAPI createScavenger(String type, Vector2f locInHyper, MarketAPI source, boolean pirate, Random random)
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)