Starsector API
Loading...
Searching...
No Matches
StormcallerGhost.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.ghosts.types;
2
3import org.lwjgl.util.vector.Vector2f;
4
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.SectorEntityToken;
7import com.fs.starfarer.api.impl.campaign.ghosts.BaseSensorGhost;
8import com.fs.starfarer.api.impl.campaign.ghosts.BaseSensorGhostCreator;
9import com.fs.starfarer.api.impl.campaign.ghosts.GBGoTo;
10import com.fs.starfarer.api.impl.campaign.ghosts.GBStayInPlace;
11import com.fs.starfarer.api.impl.campaign.ghosts.GBStormArea;
12import com.fs.starfarer.api.impl.campaign.ghosts.SensorGhostManager;
13import com.fs.starfarer.api.impl.campaign.ids.Tags;
14
15public class StormcallerGhost extends BaseSensorGhost {
16
18 super(manager, 40);
19
20 float size = genFloat(600f, 700f);
22 //setDespawnRange(-size * 0.7f);
23 setDespawnRange(-500f);
24 entity.addTag(Tags.UNAFFECTED_BY_SLIPSTREAM);
25 if (!placeNearPlayer()) {
27 return;
28 }
29
30 int numStops = 2 + manager.getRandom().nextInt(4);
31
32 int maxBurn = 10;
33 Vector2f curr = entity.getLocation();
34 for (int i = 0; i < numStops; i++) {
35 Vector2f loc = BaseSensorGhostCreator.findDeepHyperspaceArea(curr, 1000f, 3000f, 1000f, manager.getRandom());
36 curr = loc;
37 if (loc == null) {
39 return;
40 }
41 SectorEntityToken target = Global.getSector().getHyperspace().createToken(loc);
42 addBehavior(new GBGoTo(20f, target, maxBurn));
43 addBehavior(new GBStayInPlace(0.4f + manager.getRandom().nextFloat() * 0.3f));
44 addBehavior(new GBStormArea(1500f + manager.getRandom().nextFloat() * 500f));
45 addBehavior(new GBStayInPlace(0.4f + manager.getRandom().nextFloat() * 0.3f));
46 }
47 }
48
49}
50
51
52
53
54
55
static SectorAPI getSector()
Definition Global.java:59
static Vector2f findDeepHyperspaceArea(Vector2f from, float minRange, float maxRange, float radius, Random random)